Возможно, есть более простой способ, но, похоже, это работает:
RAILS_ROOT.split('/').last
РЕДАКТИРОВАТЬ: Bleah - это было отклонено один раз, и избиратель был прав. Если бы я прочитал вопрос более внимательно, я бы заметил элементы 2.3 и template.rb. Извинения.
Я подозреваю, что RAILS_ROOT не был создан в тот момент, когда вам нужно имя приложения. Однако, глядя на ruby\lib\ruby\gems\1.8\gems\rails-2.2.2\bin\rails
, почти первое, что происходит, это:
app_path = ARGV.first
Он используется в конце скрипта, чтобы позволить chdir и заморозить, если это необходимо - я не знал, что смогу замерзнуть при создании, поэтому я узнал что-то новое, по крайней мере. ARGV
тогда привыкаешь здесь:
Rails::Generator::Scripts::Generate.new.run(ARGV, :generator => 'app')
, который быстро доставит нас к месту, где ARGV действительно обрабатывается:
rails-2.3.1\lib\rails_generator\scripts.rb
где я вижу
Rails::Generator::Base.instance(options[:generator], args, options).command(options[:command]).invoke!
Где-то здесь, ниже, вероятно, где обрабатываются шаблоны. Боюсь, я нахожусь на очень ранней стадии с 2.3, и шаблоны - это область, на которую я еще не смотрел.
Это поможет мне лучше, чем мои первые попытки?