我的 rails 应用程序有一个网站爬虫,它加载爬虫在config/initializers
. 初始化程序通过调用 SiteLogin 模型中的模型方法来加载身份验证。
当我运行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