宝石定制

时间:2010-09-04 16:56:17

标签: ruby-on-rails rubygems geokit

我在geokit gem中添加了一些缓存功能,并使用gemcutter创建了一个'badnaam-geokit'副本。唯一改变的是Geocoders.rb,如果我只是在本地修改它,它可以正常工作。

然而,在我将它发布到rubygems并安装它并在我的environment.rb(config.gem“badnaam-geokit”)文件中将其命名为'badnaam-geokit'后,我感到很讨厌。

有什么想法吗?

这是我在github上的fork

http://github.com/badnaam/geokit-gem

这是宝石。 http://rubygems.org/gems/badnaam-geokit

no such file to load -- badnaam-geokit
/usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
/usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:156:in `require'
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:521:in `new_constants_in'
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:156:in `require'
/usr/local/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/rails/gem_dependency.rb:208:in `load'
/usr/local/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:307:in `load_gems'
/usr/local/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:307:in `each'
/usr/local/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:307:in `load_gems'

2 个答案:

答案 0 :(得分:1)

虽然您的gem已更改名称,但库名称未更改。你的config.gem行告诉Rails加载gem然后require 'badnaam-geokit',但你的gem中没有该名称的文件。

要解决此问题,请使用:lib选项config.gem

config.gem 'badnaam-geokit', :lib => 'geokit'

此外,不鼓励将宝石推送到Rubygems进行这样的更改。我建议你将你的Rails项目切换到use Bundlerworks great with Rails 2.3.5),然后使用:git选项直接从你的Github fork加载gem。

答案 1 :(得分:-1)

我使用了:lib选项。

这就是有效的方法

config.gem“badnaam-geokit”,:lib => “geokit”