Shiny happy people coding

Coding with smile

Oupsnow 0.5.0 Released

| Comments

That’s it. After only one month to released Oupsnow 0.4.1, I released the 0.5.0 version. This version mark adding features and stability on code base.

New features ?

  • Add filter by closed or not with closed keywords
  • You can edit a milestone now
  • You can define one milestone like current. By define the first one created
  • Add the recover password configuration by your email
  • Add remember solution when you logged
  • Add information about number of ticket in search
  • A logged user can watch a ticket. If user watch ticket he received email when ticket is update
  • A user can change his own email.

Like I made each time, my capistrano file to deploy Oupsnow

set :application, “oupsnow” set :repository, “git://github.com/shingara/oupsnow.git” set :domain, “dev.shingara.fr” # If you aren’t deploying to /u/apps/#{application} on the target # servers (which is the default), you can specify the actual location # via the :deploy_to variable: set :deploy_to, “XXXXXXXXX” # If you aren’t using Subversion to manage your source code, specify # your SCM below: # set :scm, :subversion set :scm, :git set :git_enable_submodules, 1 set :runner, “xxxx” set :user, “xxxx” set :use_sudo, false set :thin_conf, “/etc/thin/#{domain}.yml” set :rails_env, “production” role :app, domain role :web, domain role :db, domain, :primary => true task :update_config, :roles => [:app] do run “ln -s #{shared_path}/config/database.yml #{release_path}/config/database.yml” run “ln -s #{shared_path}/config/email.yml #{release_path}/config/email.yml” run “ln -s #{shared_path}/config/initializers/errornot.rb #{release_path}/config/initializers/errornot.rb” run “cd #{release_path} && echo ‘GOOGLE_ANALYTICS="XXXXXXXX"’ >> config/environment.rb” end namespace :deploy do task :start, :roles => [:app] do run “thin -C #{thin_conf} start” end task :stop, :roles => [:app] do run “thin -C #{thin_conf} stop” end task :restart, :roles => [:app] do run “thin -C #{thin_conf} restart” end end task :update_db do run “cd #{current_path} && RAILS_ENV=#{rails_env} rake db:update” end after “deploy:update_code”, :update_config after “deploy:symlink”, :update_db

Traduction française

Typo 5.4.0 Released

| Comments

That’s it. A new version of Typo is released. I don’t really participate to this version, by lack of time and motivation, but I am allways proud to see a new version.

Each release see a new admin, but each time is allways better than previous. So it’s a good thing.

My french blog is update and use this new version with new default design.

My little gift with this released is my capistrano config file to deploy it. It can be useful

set :application, “typo” set :repository, “git://github.com/fdv/typo.git” set :domain, “blog.shingara.fr” # If you aren’t deploying to /u/apps/#{application} on the target # # servers (which is the default), you can specify the actual location # # via the :deploy_to variable: set :deploy_to, “/var/rails/blog-typo” # # # If you aren’t using Subversion to manage your source code, specify # # your SCM below: set :scm, :git set :runner, “rails” set :user, “rails” set :use_sudo, false set :thin_conf, “/etc/thin/#{domain}.yml” role :app, domain role :web, domain role :db, domain, :primary => true task :update_config, :roles => [:app] do run “cp -Rf #{shared_path}/config/* #{release_path}/config/” run “ln -s #{shared_path}/files #{release_path}/public/files” end task :update_gems, :roles => [:app] do run “cd #{release_path} && RAILS_ENV=production rake gems:install” end after “deploy:update_code”, :update_config after “deploy:update_code”, :update_gems namespace :deploy do task :start, :roles => [:app] do run “thin -C #{thin_conf} start” end task :stop, :roles => [:app] do run “thin -C #{thin_conf} stop” end task :restart, :roles => [:app] do run “thin -C #{thin_conf} restart” end end task :clear_cache, :roles => [:app] do run “cd #{current_path} && RAILS_ENV=production rake sweep_cache” run “cd #{current_path} && RAILS_ENV=production rake tmp:cache:clear” end after “deploy:restart”, :clear_cache after “deploy:start”, :clear_cache

Traduction française

Oupsnow 0.4.0 Released

| Comments

That’s it. I finally released Oupsnow 0.4.0. This version is a complete refactoring. After a oupsnow version 0.3.0 in Merb/DataMapper, this new version is with Rails and MongoDB. The server and the backend have changed.

But with the complete changed, there are some new features.

  • Add filter by state in search ticket
  • Add possibility to change function of all member by project
  • Add preview in ticket and ticket updates
  • Add ticket’s milestone information in ticket show
  • Add ordering to all column in ticket search

You can download it on rubyforge

If you want try the oupsnow demo version, it’s online. The administrator login/password is : admin@admin.org/oupsnow Have fun.

The code source is hosted on github http://github.com/shingara/oupsnow

You can report any bug about it on my own oupsnow instance

Traduction française

Oupsnow From Merb to Rails

| Comments

Lately, I decided to migrate Oupsnow, from Merb to Rails.

Just after ending my migration from SQL to MongoDB, I starting a new one but this one much more deep.

Why this migration ?

Rails 3. Since December 2008, almost one year later, Merb is allways freeze. Someone say that community is reviving and it’s true. I am glad to see that, but Merb is really late now with one year of late. Even Rails don’t really improve in his stable version, his edge move a lot.

Trying test all new technologies in Ruby, I will play with Rails 3. But no migrating too exists to migrate from Merb to Rails 3. After a quick test, I see that difference between Rails 2.3.x and Rails 3 is little. So the migration from Rails 2.3.x to Rails 3 can be more easily.

Like I want release soon as possible a stable version of Oupsnow. I decided to migrate Oupsnow to Rails 2.3.x before upgrade to Rails 3. And this time, I maybe can release a stable version of Oupsnow compatible with Rails 3.

Oupsnow become a project Rails/MongoMapper and no more a Merb/DataMapper project like before. Any help are welcome.

Traduction française

RabbitMQ Doesn’t Works With MacOSX ?

| Comments

A couple of week, I want go on using RabbitMQ, I have a big issue. With RabbitMQ, you need configure vhost and user. but I can’t connect to rabbitMQ by command rabbitmqctl. Plan to upgrade my Mac to SnowLeopard I don’t found how fix this problem. RabbitMQ can be wait.

But after my upgrade, I install again RabbitMQ. to use again. But I was allways same issue. After a long search, I found the cause. The hostname.

What made if your control node rabbitMQ can’t contact the master node ?

The solution is really simple. hostname -s. Add this one in your file /etc/hosts to ip 127.0.0.1. And now it’s works. Sometimes the solution is so easy.

Traduction française

Since cucumber=0.3.4, He Has Difficult With Merb

| Comments

Since Cucumber 0.3.4, there are a big change. With this change, you need modify your using of Cucumber with Merb. In History.txt of Cucumber, you can read :

** IMPORTANT UPGRADE NOTES FOR RAILS USERS ** Running Cucumber features in the same Ruby interpreter as Rake doesn’t seem to work, so you have to explicitly tell the task to fork (like it was doing by default in prior versions). In lib/tasks/cucumber.rake: Cucumber::Rake::Task.new(:features) do |t| t.fork = true # Explicitly fork t.cucumber_opts = %w{–format pretty} end (If you run script/generate cucumber this will be done for you). Alternatively you can omit forking and run features like this: RAILS_ENV=test rake features However, setting the RAILS_ENV is easy to forget, so I don’t recommend relying on this.

This note is true to Merb user too. By default, all Merb user use the Roman’s merb_cucumber. But the generator is not good now. The rake task rake features doesn’t use the good cucumber options.

After a long and big fight with cucumber, I success to find all good options. Now with this options, I have same behaviour than before. If you want see an example in a Merb application, you can see my commit on Oupsnow. I fork too the Roman merb_cucumber and add a patch to can use cucumber 0.3.4 and more.

EDIT : My modif of merb_cucumber is integrate to Roman branch.

Traduction française

Oupsnow 0.2.0 Released

| Comments

After less of one month, There are a new version of Oupsnow. This new version 0.2.0 is the first, I use in production. Now, my development platforme is not manage by Redmine, it’s Oupsnow.

The news in this version are :

  • A converter Redmine -> Oupsnow integrate. It’s with it, I can change my development platforme. without lost.

to be added :

  • A milestones management
  • A ticket’s state management
  • A ticket’s severity management
  • A formating with RedCloth

After this release, I focus me on Typo and made the big feature in 5.2.1 version.

Traduction française

Typo 5.2.0 Released

| Comments

It’s my turn to announced the release of Typo 5.2. This release is the first where I participe. Since august, I am a contributeur of Typo. I start the migration of Typo with Rails 2.2 (before the official release). After we start with Frédéric to improve the performance and the user experience of Typo.

Today with this released of Typo, the work is really good. We made maximum to be great. But we have not done. We have a lot of idea to integrate in Typo. We try too release more often.

A little gift, My capistrano file I use to deploy Typo.

set :application, “typo” set :repository, “git://github.com/fdv/typo” set :domain, “shingara.fr” # If you aren’t deploying to /u/apps/#{application} on the target # servers (which is the default), you can specify the actual location # via the :deploy_to variable: set :deploy_to, “/var/rails/blog-typo” # If you aren’t using Subversion to manage your source code, specify # your SCM below: set :scm, :git set :git_enable_submodules, 1 set :runner, “rails” set :user, “rails” set :use_sudo, false set :thin_conf, “/etc/thin/typo.yml” role :app, domain role :web, domain role :db, domain, :primary => true task :update_config, :roles => [:app] do run “ln -s #{shared_path}/config/database.yml #{release_path}/config/database.yml” run “ln -s #{shared_path}/files #{release_path}/public/files” run “ln -s #{shared_path}/cache #{release_path}/tmp/cache” run “ln -s #{shared_path}/newrelic_rpm #{release_path}/vendor/plugins/newrelic_rpm” run “ln -s #{shared_path}/config/newrelic.yml #{release_path}/config/newrelic.yml” run “ln -s #{shared_path}/config/agent #{release_path}/config/agent” run “ln -s #{shared_path}/config/mail.yml #{release_path}/config/mail.yml” end task :dump_before, :roles => [:app] do run “pg_dump -U typoblog typo > #{shared_path}/typo#{Time::today.strftime(‘%Y-%m-%d’)}.sql” end namespace :deploy do task :start, :roles => [:app] do run “thin -C #{thin_conf} start” end task :stop, :roles => [:app] do run “thin -C #{thin_conf} stop” end task :restart, :roles => [:app] do run “thin -C #{thin_conf} restart” end end after “deploy:update_code”, :update_config before “deploy:migrations”, :dump_before

Traduction Française

Pretty URL in Merb

| Comments

If like me, you are fan to pretty URL. You know how use it in RubyOnRails. You need define the return of method to_params. Using Merb, I want using same system in Merb. In first, I test modify the return of to_params method. But it’s not the way in Merb. The way is simpliest. You need using option :identify in you resource in your route. With this system I can define the methode ticket_permalink in Oupsnow as defin the pretty URL of ticket. After I just need define what I want in this URL. This return string to be allways use in my URL generated to define a ticket. Finally, I need define a method def self.get_by_permalink(ticket_permalink) that I use in place of Ticket.get(id). I can update easily the URL to define my ticket.

But you need to know that all parameter define your ticket are allways the value of :identity option. Even in nested resource. No id and ticket_id. Only ticket_permalink.

Traduction Française

Oupsnow 0.1.0 Released

| Comments

I am really happy to released Oupsnow. After to participate to Redmine and using it, I decided to create my own bug tracker. I think redmine has some default. I finish by create my own bug tracker. It’s strongly inspired by Lighthouse which really simple to use it.

It’s the first version release after 2 month of development. It’s not a complete product. But it’s start to have a few feature to use it. In second, Oupsnow is a product using Merb. With this project I can be discover and improve my knowledge.

In next release, I will improve the administraion. I will create a converter from redmine to Oupsnow. After this creation, I will migrate to Oupsnow in place of Redmine to my development platforme

I install a demo. With it you can see what is Oupsnow.

In bonus, my deploy.rb file used to deploy my demo of Oupsnow by capistrano.

set :application, “oupsnow” set :repository, “git://github.com/shingara/oupsnow.git” set :domain, “shingara.fr” # If you aren’t deploying to /u/apps/#{application} on the target # servers (which is the default), you can specify the actual location # via the :deploy_to variable: set :deploy_to, “/var/rails/oupsnow-demo” set :deploy_via, :remote_cache set :repository_cache, “#{application}-src” # If you aren’t using Subversion to manage your source code, specify # your SCM below: # set :scm, :subversion set :scm, :git set :git_enable_submodules, 1 set :runner, “rails” set :user, “rails” set :use_sudo, false set :rack_up, “/etc/thin/oupsnow-demo.ru” set :merb_port, 46000 role :app, domain role :web, domain role :db, domain, :primary => true task :update_config, :roles => [:app] do run “ln -s #{shared_path}/config/database.yml #{release_path}/config/database.yml” end namespace :deploy do task :start, :roles => [:app] do run “merb -u #{user} -G #{user} -d -c 1 -p #{merb_port} -n #{application} -a thin -e production -m ‘#{deploy_to}/current/’” end task :stop, :roles => [:app] do run “merb -u #{user} -G #{user} -d -c 1 -K all -p #{merb_port} -n #{application} -a thin -e production -m ‘#{deploy_to}/current/’” end task :restart, :roles => [:app] do deploy.stop deploy.start end end after “deploy:update_code”, :update_config

Traduction française