0

I added some caching functionality to the geokit gem and used gemcutter to create a copy 'badnaam-geokit'. The only changed are in Geocoders.rb which works fine if I just modify it locally.

However, after I published it to rubygems and installed it and require it as 'badnaam-geokit' in my environment.rb (config.gem "badnaam-geokit") file I get a nasty.

Any ideas?

Here is the my fork on github

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

and here is the 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'
4

2 回答 2

1

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

解决这个问题,使用以下:lib选项config.gem

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

此外,不鼓励将 gem 推送到 Rubygems 以进行此类更改。相反,我建议您将 Rails 项目切换为使用 Bundler与 Rails 2.3.5 一起使用非常好),然后使用该:git选项直接从您的 Github fork 加载 gem。

于 2010-09-04T17:22:59.943 回答
-1

我使用了 :lib 选项。

所以这就是有效的

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

于 2010-09-04T17:29:21.877 回答