【发布时间】:2010-11-15 17:33:55
【问题描述】:
我正在使用jeweler 为Rails 3 创建一个gem。gem 包含一个rake 任务,它所做的一件事就是擦除数据库,所以我使用'database_cleaner'。
我在 gem 的 Gemfile 中指定 gem 依赖项
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
还有tasks.rake:
task :my_task do
DatabaseCleaner.strategy = :truncation
DatabaseCleaner.clean
end
我安装了 gem (sudo rake install),创建了一个空的 rails 项目,并在 rails 的 Gemspec (gem 'my_gem') 中添加了 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' 添加到 rails 项目的 Gemspec 的情况下解决这个问题?
谢谢
更新(添加源代码链接): https://github.com/jordinl/dummy_tasks
【问题讨论】:
-
你能从 gem 中发布 mygem.gemspec 并从空的 rails 应用程序中发布 Gemfile.lock 吗?
-
嘿!我已将链接添加到 github 存储库。谢谢!
标签: ruby-on-rails ruby ruby-on-rails-3 bundler