2010-11-15 8 views
6

Rails 3 için bir mücevher oluşturmak için kuyumcu kullanıyorum. Taş bir komisyon görevi içeriyor ve yaptığı şeylerden biri de DB'yi siliyor, bu yüzden 'database_cleaner' kullanıyorum .Bir gemin komisyon görevi içinde bir mücevher gerektiren

Ben GEM Gemfile

gem 'database_cleaner' 

içeride Ve Rakefile

Jeweler::Tasks.new do |gem| 
    ... 
    gem.add_dependency 'database_cleaner' 
end 
Sonra dosyaları oluşturduk lib içine my_gem.rb

ve tasks.rake içinde mücevher bağımlılığını belirterek ediyorum.

module MyGem 
    class Railtie < Rails::Railtie 
    rake_tasks do 
     load 'tasks.rake' 
    end 
    end 
end 

Ve tasks.rake:, my_gem.rb şöyle

task :my_task do 
    DatabaseCleaner.strategy = :truncation 
    DatabaseCleaner.clean 
end 

ben taş (sudo tırmık yükleme) yüklü, boş raylar projeyi oluşturulan ve raylar içinde mücevher bağımlılık eklendi Gemspec (gem 'my_gem'). Ancak, rake my_task'u çalıştırmaya çalıştığımda uninitialized constant DatabaseCleaner hatasını alıyorum.

Ben de hata no such file to load -- database_cleaner ve hatayı database_cleaner is not part of the bundle. Add it to Gemfile. yükseltir gem 'database_cleaner' yükseltir görev, içeriden require 'database_cleaner' ekleyerek denedim.

Bu raylar projesinin Gemspec'ine gem 'database_cleaner' eklemeden bunu çözmenin bir yolu var mı?

Teşekkür

GÜNCELLEME (kaynak koduna bağlantı eklemeyi): Burada https://github.com/jordinl/dummy_tasks

+0

database_cleaner gemini eklemekten alıkoyabilirsiniz. raylar uygulaması? – johnmcaliley

+0

hey! Bağlantıyı github repo'ya ekledim. Teşekkürler! – jordinl

cevap

3

bunu çalışması yaptıklarını edilir:

https://github.com/johnmcaliley/dummy_tasks/commits/master

tasks.rake

require 'database_cleaner' 
require 'dummy_tasks' 

namespace :db do 
    task :dummy => :environment do 
    DatabaseCleaner.strategy = :truncation 
    DatabaseCleaner.clean            
    Rake::Task['db:seed'].invoke  
    end 
end 

Bunu yapmak için daha zarif bir yol olabilir, ama bu en azından, gemiden gemideki myfem.gemspec'i gemiden gemfile.lock'a gönderebilirseniz Gemfile

+0

çok teşekkürler dostum! – jordinl

+2

Bağlantı şimdi 404. Lütfen detaylandırır mısınız: Burada tam olarak ne yaptınız ve neden? – amoebe