Raylarım uygulamasında, tarayıcının, config/initializers
numaralı telefondan bir ray başlatıcıda kullandığı kimlik doğrulama bilgilerini yükleyen bir web sitesi tarayıcısı vardır. Başlatıcı, SiteLogin modelinde bir model yöntemi çağırarak kimlik doğrulamasını yükler.Bir rake görevi yürütürken Rails başlatıcısının yüklenmesini nasıl atlayabilirim?
SiteLogin
model tablosunu oluşturmak için rake db:migrate
'u çalıştırdığımda, başlatıcı veritabanı tablosunun zaten var olmasını beklediğinden başarısız olur. Sadece başlatıcıdaki kodu yorumlayabilirim, tabloyu oluşturmak için geçişi çalıştırın, sonra başlatıcı kodunu kaldırın ve sorun hakkında endişelenmeyin.
Sorun şu ki, dağıtmak için Capistrano kullanıyorum ve bu, ilk önce, başlatıcı kodu olmadan geçişi çalıştırmadan önce dağıtıcıyı çalıştırmak ve sonra başlatıcı koduyla yeniden dağıtmak zorunda olduğum anlamına gelir. Bunu yapmanın daha iyi bir yolu var mı yoksa bu yaklaşım benim yaklaşımım tamamen yanlış mı?
İşte daha iyi davamı açıklamak için biraz kod örneği verilmiştir:
# 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