我正在尝试在Rails 3中构建一个gem并且在其中我试图传递一个初始化器:
Credentials.configure do |config|
file = File.read("#{Rails.root}/config/twitter.yaml")
file_config = YAML.load(file)
config.consumer_key = file_config[Rails.env][:consumer_key]
config.consumer_secret = file_config[Rails.env][:consumer_secret]
config.callback_url = URI.escape(file_config[Rails.env][:callback_url])
config.time_stamp = Time.now.to_i
end
然后我试着这样称呼它:
Credentials.time_stamp
但是我收到了这个错误:
uninitialized constant Twitter::Credentials
问题是什么?
由于
答案 0 :(得分:7)
你的gem首先需要在lib / generators / your_gem_name_generator.rb中定义一个生成器
mkdir -p lib/generators/
使用名称twitter_credentials.rb
然后在该文件夹中创建另一个文件,其名称为twitter_generator.rb
,内容如下:
class YourGemNameRailtie < Rails::Generators::Base
source_root(File.expand_path(File.dirname(__FILE__))
def copy_initializer
copy_file 'twitter_credentials.rb', 'config/initializers/twitter_credentials.rb'
end
end
您应该在此处查看有关创建生成器的官方文档: http://guides.rubyonrails.org/generators.html