My rails appには、クローラがレール初期化子で使用する認証資格情報をconfig/initializers
にロードするWebサイトクローラがあります。初期化子は、SiteLoginモデルでモデルメソッドを呼び出して認証をロードします。rakeタスクを実行しているときにRailsイニシャライザの読み込みをスキップするにはどうすればよいですか?
SiteLogin
モデルテーブルを作成するときにrake db:migrate
を実行すると、イニシャライザはデータベーステーブルがすでに存在することを期待しているため失敗します。私は自分のイニシャライザでコードをコメントアウトし、マイグレーションを実行してテーブルを作成し、イニシャライザコードのコメントを外し、問題について心配する必要はありません。
問題は、私が展開するカピストラーノを使用していますし、これは私が初期化コードを再び展開し、移行を実行するために、初期化コードなしで最初に展開する必要があるだろうことを意味する、です。これを行う良い方法はありますか、この場合は私のアプローチが完全に間違っています。
ここでは、より良い私の場合を説明するためのいくつかのサンプルコードです:おそらく
# config/initializers/site_crawler_init.rb
SiteCrawler.setup do |config|
config.hostname = "www.example.com"
end
# model/site_crawler.rb
class SiteCrawler
...
class << self
attr_accessor :configuration
def setup
self.configuration ||= Configuration.new
yield(configuration)
end
end
class Configuration
attr_accessor :hostname, :login_credentials
def initialize
@login_credentials = SiteLogin.admin_user
...
end
end
end