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
4

2 回答 2

0

我不能肯定地说,但这通常不是我看到在 gem 中创建的生成器的方式。gem_name.rb通常它们与实际文件是分开的。我认为,如果您将生成器逻辑移到更常见的位置lib/generators/generator_name/generator_name.rb,您将会有更多的运气。然后您可以将要复制的文件放在子目录中../generator_name/templates/

另请注意,您需要将 .rb 结尾添加到您的copy_file "verifications_controller,"

要使模板正常工作,您可以按照我在此处编写的使用生成器的简单 gem 的布局进行操作。

于 2012-12-01T21:58:51.403 回答
0

重新启动 Rails 服务器,然后尝试

如需帮助,请参阅此链接:Rails 添加 Twilio 子帐户:未初始化的常量 User::Twilio

于 2012-12-01T06:09:07.793 回答