Rails 如何在 gem 中创建初始化程序 [英] Rails how to create an initializer inside a gem
问题描述
我正在尝试在 Rails 3 中构建一个 gem,并在其中尝试传递一个初始化程序:
I am trying to build a gem in Rails 3 and inside it i am trying to pass an initializer:
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
然后我尝试这样称呼它:
and then i am trying to call it like this:
Credentials.time_stamp
但我收到此错误:
uninitialized constant Twitter::Credentials
有什么问题?
谢谢
推荐答案
你的 gem 首先需要在 lib/generators/your_gem_name_generator.rb 中定义一个生成器
Your gem will first need to define a generator in lib/generators/your_gem_name_generator.rb
mkdir -p lib/generators/
将您的初始化程序复制到该文件夹中,名称类似于 twitter_credentials.rb
Copy your initializer in that folder with a name like twitter_credentials.rb
然后在该文件夹中创建另一个文件,其名称类似于 twitter_generator.rb
,内容如下:
Then create another file in that folder with a name like twitter_generator.rb
with content like this:
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
You should check out the official documentation for creating a generator here: http://guides.rubyonrails.org/generators.html
这篇关于Rails 如何在 gem 中创建初始化程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!