Я использую jeweler для создания гема для Rails 3. Драгоценный камень содержит задачу rake, и одна из вещей, которую он делает, это стирание БД, поэтому я использую 'database_cleaner'.
Я указываю зависимость от самоцвета в Gemfile самоцвета
gem 'database_cleaner'
и в Rakefile
Jeweler::Tasks.new do |gem|
...
gem.add_dependency 'database_cleaner'
end
Затем внутри lib я создал файлы my_gem.rb и tasks.rake. Следующим образом, my_gem.rb:
module MyGem
class Railtie < Rails::Railtie
rake_tasks do
load 'tasks.rake'
end
end
end
И задачи. Грабли:
task :my_task do
DatabaseCleaner.strategy = :truncation
DatabaseCleaner.clean
end
Я установил gem (sudo rake install), создал пустой проект rails и добавил зависимость gem в Gemspec для rails (gem 'my_gem'
). Но когда я пытаюсь запустить rake my_task
, я получаю ошибку uninitialized constant DatabaseCleaner
.
Я также пытался добавить require 'database_cleaner'
изнутри задачи, что вызывает ошибку no such file to load -- database_cleaner
и gem 'database_cleaner'
, которая вызывает ошибку database_cleaner is not part of the bundle. Add it to Gemfile.
.
Есть ли способ решить эту проблему без добавления gem 'database_cleaner'
в Gemspec проекта rails?
Спасибо
ОБНОВЛЕНИЕ (добавление ссылки на исходный код):
https://github.com/jordinl/dummy_tasks