2012-12-01 119 views
0

我有一個問題,在rails中創建一個生成器,這是我得到的錯誤。 我想創建一個生成器,通過提供者Twilio創建SMS確認。創建生成器軌道

require "sms_auth-twilio" 
NameError: uninitialized constant Twilio::Rails 
from /Users/sherodtaylor/.rvm/gems/ruby-1.9.3-p125/gems/sms_auth-twilio-0.0.2/lib/sms_auth-twilio.rb:3:in `<module:Twilio>' 
from /Users/sherodtaylor/.rvm/gems/ruby-1.9.3-p125/gems/sms_auth-twilio-0.0.2/lib/sms_auth-twilio.rb:2:in `<top (required)>' 
from /Users/sherodtaylor/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `require' 
from /Users/sherodtaylor/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `rescue in require' 
from /Users/sherodtaylor/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require' 
from (irb):1 
from /Users/sherodtaylor/.rvm/rubies/ruby-1.9.3-p125/bin/irb:16:in `<main>' 

這是我的代碼

require "sms_auth-twilio/version" 
    module Twilio 
    class TwilioGenerator < Rails::Generator::Base 
    source_root File.expand_path("../generator", __FILE__) 
    def add_twilio_initializer 
     copy_file "twilio.rb", "config/initializer/twilio.rb" 
    end 
    # config info for the API 
    def twilio_config_info 
     copy_file "twilio.yml", "config/twilio.yml" 
    end 
    # Verification Controller to verify the company 
    def copy_verifications 
     copy_file "verifications_controller", "app/contoller/verifications_controller.rb" 
    end 
    end 
end 
+0

您是否運行生成器顯示錯誤? – joofsh

+0

是的,如果我的代碼或者是什麼因爲我把它包裹在寶石中,是的。也許這就是爲什麼? – sherodtaylor

回答

0

我不能肯定地說,但這通常不是我如何看到在寶石內創建的發電機。通常它們與實際的gem_name.rb文件分開。我認爲如果你將發電機邏輯轉移到更常見的lib/generators/generator_name/generator_name.rb中,你會有更多的運氣。然後你可以將文件以一個子目錄../generator_name/templates/

另外請注意,你需要添加的.rb結尾您copy_file "verifications_controller,"

對於一個模板的工作關內複製,你可以遵循一個簡單的佈局寶石我寫了here它利用一個發電機。