2010-11-15 19 views
6

Używam jubilera do stworzenia klejnotu dla Rails 3. Klejnot zawiera zadanie rake i jedną z rzeczy, które robi, jest wyczyszczenie DB, więc używam "database_cleaner" .Wymaganie klejnotu wewnątrz zadania rake gemowego

jestem określające zależność wewnątrz gem gem Gemfile

gem 'database_cleaner' 

aw Rakefile

Jeweler::Tasks.new do |gem| 
    ... 
    gem.add_dependency 'database_cleaner' 
end 

Następnie wewnątrz lib Utworzyłem pliki my_gem.rb i tasks.rake. Jak wynika, my_gem.rb:

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

And tasks.rake:

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

zainstalowałem gem (sudo grabie zainstalować), stworzył projekt pusty szyn i dodaje zależność klejnot w szynach Gemspec (gem 'my_gem'). Ale kiedy próbuję uruchomić rake my_task pojawia się błąd uninitialized constant DatabaseCleaner.

Próbowałem zostały również dodanie require 'database_cleaner' od wewnątrz tego zadania, co podwyższa błąd no such file to load -- database_cleaner i gem 'database_cleaner' że podnosi błąd database_cleaner is not part of the bundle. Add it to Gemfile..

Czy istnieje sposób rozwiązania tego problemu bez dodawania gem 'database_cleaner' do Gemspec projektu rails?

Dzięki

UPDATE (dodając odnośnik do kodu źródłowego): https://github.com/jordinl/dummy_tasks

+0

czy możesz opublikować mygem.gemspec z gem i Gemfile.lock z pustego aplikacja szyn? – johnmcaliley

+0

hej! Dodałem link do repozytorium github. dzięki! – jordinl

Odpowiedz

3

Oto co zrobiłem, aby to działało:

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 

Może być na to bardziej elegancki sposób, ale powinno to przynajmniej uniemożliwić dodanie gem gemu database_cleaner do Gemfile

+0

wielkie dzięki! – jordinl

+2

Link ma teraz 404. Mógłbyś proszę wyjaśnić: co dokładnie tutaj zrobiłeś i dlaczego? – amoebe

Powiązane problemy