В моем приложении rails есть искатель веб-сайта, который загружает учетные данные для проверки подлинности, которые искатель использует в инициализаторе 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