我的Rails應用程序有一個網站爬網程序,用於加載爬網程序在config/initializers
的rails初始化程序中使用的認證憑證。初始化程序通過在SiteLogin模型中調用模型方法加載認證。如何在運行rake任務時跳過加載Rails初始化程序?
當我運行rake db:migrate
來創建SiteLogin
模型表時,它失敗了,因爲初始值設定項期望數據庫表已經存在。我可以簡單地在我的初始化程序中註釋掉代碼,運行遷移來創建表,然後取消註釋初始化程序代碼,而不用擔心這個問題。
問題是,我正在使用Capistrano進行部署,這意味着我必須首先部署初始化程序代碼才能運行遷移,然後再使用初始化程序代碼進行部署。有沒有更好的方法來做到這一點,或者在這種情況下我的方法是完全錯誤的。
下面是一些代碼示例,以更好地解釋我的情況:
# 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