03/14/2009: Using Rails Gem to Generate a New Project on Ubuntu
Using the rails installed by apt-get was a bit confusing because the rails project being generated was not the rails version that I expected. I had installed the rails gem v2.2.2 but the config/environment.rb file showed rails v2.1.
I fixed this issue by removing the default rails.
sudo apt-get remove rails
And then using an alias:
export GEMDIR=`gem environment gemdir`
export RAILS_VERSION=`gem list rails | grep "rails " | cut -b8- | awk '{sub(/\)/, "");print}'`
alias rails='ruby $GEMDIR/gems/rails-$RAILS_VERSION/bin/rails'
Now when I do
rails dool
The project uses the right version of rails!
01/05/2009: The --include-activation and --aasm parameters of the Restful Authentication Rails Plugin are mutually exclusive
I was following the installation instructions for the Restful Authentication Rails plugin. So I executed:
script/generate authenticated user sessions --include-activation -—aasm --rspec
This resulted in:
premature end of regular expression: /\A
After digging into the source code, I found that the parse! method in
/usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/rails_generator/options.rb swallowed exceptions. Here is the original code.
def parse!(args, runtime_options = {})
self.options = {}
@option_parser = OptionParser.new do |opt|
opt.banner = banner
add_options!(opt)
add_general_options!(opt)
opt.parse!(args)
end
return args
ensure
self.options = full_options(runtime_options)
end
The OptionParser initialization may cause exceptions which are not properly handled. I don't know what should be down but added the following code immediately before the ensure line at least will show the exception.
rescue => e
puts("I caught a #{e.class.to_s} with message #{e.to_s}")
Now that the exception is displayed, I saw one of my underlying problems:
I caught a OptionParser::InvalidOption with message invalid option: --include-activation
So I learned that when the --aasm parameter is used, then the --include-activation must not be specified.