aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2009-06-17 23:07:19 +0200
committerJosé Valim <jose.valim@gmail.com>2009-06-19 16:11:54 +0200
commit7a8e28476617984a68e74a91c6489cca1c9b8b21 (patch)
tree3588e6b8c118072cca7a9840767a7efffaccdfff
parent748e1d67458f290ded5f28134af33dd86e17db63 (diff)
downloadrails-7a8e28476617984a68e74a91c6489cca1c9b8b21.tar.gz
rails-7a8e28476617984a68e74a91c6489cca1c9b8b21.tar.bz2
rails-7a8e28476617984a68e74a91c6489cca1c9b8b21.zip
Refactor shebang to a class method, so other generators can use it.
-rw-r--r--railties/lib/generator/base.rb21
-rw-r--r--railties/lib/generator/generators/app.rb18
2 files changed, 24 insertions, 15 deletions
diff --git a/railties/lib/generator/base.rb b/railties/lib/generator/base.rb
index db63940a37..5954dc1afd 100644
--- a/railties/lib/generator/base.rb
+++ b/railties/lib/generator/base.rb
@@ -7,7 +7,6 @@ require 'thor'
module Rails
module Generators
-
class Error < Thor::Error
end
@@ -26,7 +25,25 @@ module Rails
File.expand_path(File.join(File.dirname(__FILE__), 'templates', klass_name.downcase))
end
end
- end
+ # Small macro to ruby as an option to the generator with proper default
+ # value plus an instance helper method.
+ #
+ def self.add_shebang_option!
+ require 'rbconfig'
+ default = File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name'])
+
+ class_option :ruby, :type => :string, :aliases => "-r", :default => default,
+ :desc => "Path to the Ruby binary of your choice"
+
+ class_eval do
+ protected
+ def shebang
+ "#!#{options[:ruby] || "/usr/bin/env ruby"}"
+ end
+ end
+ end
+
+ end
end
end
diff --git a/railties/lib/generator/generators/app.rb b/railties/lib/generator/generators/app.rb
index 101727de7a..8b88278ab5 100644
--- a/railties/lib/generator/generators/app.rb
+++ b/railties/lib/generator/generators/app.rb
@@ -1,22 +1,17 @@
require File.dirname(__FILE__) + '/../base'
-require 'rbconfig'
require 'digest/md5'
require 'active_support/secure_random'
module Rails::Generators
class App < Base
- namespace :rails
+ DATABASES = %w( mysql oracle postgresql sqlite2 sqlite3 frontbase ibm_db )
- DEFAULT_SHEBANG = File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name'])
- DATABASES = %w( mysql oracle postgresql sqlite2 sqlite3 frontbase ibm_db )
- DEFAULT_DATABASE = 'sqlite3'
+ namespace :rails
+ add_shebang_option!
argument :app_path, :type => :string
- class_option :ruby, :type => :string, :aliases => "-r", :default => DEFAULT_SHEBANG,
- :desc => "Path to the Ruby binary of your choice"
-
- class_option :database, :type => :string, :aliases => "-d", :default => DEFAULT_DATABASE,
+ class_option :database, :type => :string, :aliases => "-d", :default => "sqlite3",
:desc => "Preconfigure for selected database (options: #{DATABASES.join('/')})"
class_option :freeze, :type => :boolean, :aliases => "-F", :default => false,
@@ -38,6 +33,7 @@ module Rails::Generators
:desc => "Do not generate Prototype files"
# Add Rails options
+ #
class_option :version, :type => :boolean, :aliases => "-v", :group => :rails,
:desc => "Show Rails version number and quit"
@@ -185,10 +181,6 @@ module Rails::Generators
ActiveSupport::SecureRandom.hex(64)
end
- def shebang
- "#!#{options[:ruby] || "/usr/bin/env ruby"}"
- end
-
def mysql_socket
@mysql_socket ||= [
"/tmp/mysql.sock", # default