9

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

何が問題ですか?

ありがとう

4

1 に答える 1

13

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

于 2013-04-15T00:50:49.120 に答える