问题
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
but i get this error:
uninitialized constant Twitter::Credentials
what is the problem?
Thanks
回答1:
Your gem will first need to define a generator in lib/generators/your_gem_name_generator.rb
mkdir -p lib/generators/
Copy your initializer in that folder with a name like twitter_credentials.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
You should check out the official documentation for creating a generator here: http://guides.rubyonrails.org/generators.html
来源:https://stackoverflow.com/questions/16004378/rails-how-to-create-an-initializer-inside-a-gem