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.