Difference between revisions of "Ruby on Rails"

From Tmplab
(Deploy with Capistrano)
(Deploy with Capistrano)
Line 128: Line 128:
  
 
=== Deploy with Capistrano ===
 
=== Deploy with Capistrano ===
On local host, run
 
<PRE>
 
cap deploy:setup
 
cap deploy:migrations
 
</PRE>
 
  
 
On the server host run:
 
On the server host run:
Line 138: Line 133:
 
ln -s myapp.mydomain.com penguins.dreamhost.com
 
ln -s myapp.mydomain.com penguins.dreamhost.com
 
mkdir -p ~/myapp.mydomain.com/releases
 
mkdir -p ~/myapp.mydomain.com/releases
 +
</PRE>
 +
 +
 +
On local host, run
 +
<PRE>
 +
cap deploy:setup
 +
cap deploy:migrations
 
</PRE>
 
</PRE>

Revision as of 15:46, 13 August 2009

This is valid for Rails 2.2.2, the version i'm using currently. May be valid for other versions.

Fast commands

  • Help yourself, use BORT for application baseline

Schema

ruby script/generate scaffold Project name:string description:text
ruby script/generate migration AddOwnerToProject
rake db:migrate
rake db:schema:dump

Routes

rake routes

Running

Debugging

  1. Install http://hoptoadapp.com/ or http://getexceptional.com/
  2. Look in log/development.log
  3. Add "debugger" somewhere in the controller
  4. Relaunch the server using "ruby script/server --debugger"
    1. now commands can be typed like "list", "up", "irb" (for an Interactive Ruby session) or "cont"
    2. Remember the name of the top level object is "self" so printing something like "p self" can be useful

script/server

Usually with:

ruby script/server

DB

rake dbconsole

Ruby

rake console

then

irb

Troubleshooting

Gems

gem install <gemname>

if it breaks, try to do:

gem install

if it still breaks, try to do:

irb
require 'rubygems'
gem 'myproblemgem', '1.0.0'

then look at the problem.

Example

for example this session shows that the "echoe" gem is not installed. When running script/server:

/usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
script/server:3
Missing these required gems:
  capistrano-ext  = 1.2.1

You're running:
  ruby 1.8.7.22 at /usr/local/bin/ruby
  rubygems 1.2.0 at /usr/local/lib/ruby/gems/1.8

Run `rake gems:install` to install the missing gems.

well... indeed Captistrano-ext IS installed:

$ ls -ald /usr/local/lib/ruby/gems/1.8/gems/cap*
drwxr-xr-x   12 root  wheel  408 Jan 20 12:11 /usr/local/lib/ruby/gems/1.8/gems/capistrano-2.5.3
drwxr-xr-x    9 root  wheel  306 Jan 20 13:00 /usr/local/lib/ruby/gems/1.8/gems/capistrano-ext-1.2.1


but running the code with irb gives more details:

$ irb
>> require 'rubygems'
=> false
>> gem 'capistrano-ext', '1.2.1'
Gem::LoadError: Could not find RubyGem echoe (>= 0)

        from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:578:in `report_activate_error'
        from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:134:in `activate'
        from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:158:in `activate'
        from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:157:in `each'
        from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:157:in `activate'
        from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:158:in `activate'
        from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:157:in `each'
        from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:157:in `activate'
        from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:158:in `activate'
        from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:157:in `each'
        from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:157:in `activate'
        from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:49:in `gem'
        from (irb):2

So a simple:

# gem install echoe
Successfully installed echoe-3.0.2
1 gem installed
Installing ri documentation for echoe-3.0.2...
Installing RDoc documentation for echoe-3.0.2...

fixed the problem... well... you get the idea: there's a broken dependency in captistrano-ext for echoe....

Developping

CRUD

Rails-cycle.png

BORT

Initialize a new BORT instance

  • Edit
./config/database.yml
./config/deploy.rb
./config/environment.rb
./config/environments/development.rb
./config/environments/production.rb
./config/environments/staging.rb
./config/environments/test.rb
./config/settings.yml
  • Type
Rake db:migrate

Deploy with Capistrano

On the server host run:

ln -s myapp.mydomain.com penguins.dreamhost.com
mkdir -p ~/myapp.mydomain.com/releases


On local host, run

cap deploy:setup
cap deploy:migrations