如何找到宝石是一个图书馆?

时间:2009-11-20 12:09:42

标签: ruby-on-rails gem

我尝试使用environment.rb中的config.gem指令向我的Rails应用添加一些宝石,这样当应用程序部署在新系统上时,可以使用{{1来处理丢失的宝石问题}}

添加我的应用所依赖的所需宝石列表后,我的应用无法启动。如果我从environment.rb文件中删除所需的gem列表,那么应用程序就可以正常运行。

environment.rb中的评论说

rake gems:install

我非常肯定我错过了其中一个宝石的:lib选项,如果宝石是一个库,它是如何找到的?它是什么?

4 个答案:

答案 0 :(得分:5)

不是有“图书馆宝石”和“非图书馆宝石”。相反,Rails自动requireconfig.gem加载的所有宝石。 Rails知道要求的方式是您使用:lib指定的方式。如果您没有指定任何内容,它会尝试要求gem的名称。

例如:

config.gem 'simple-navigation'

将需要“简单导航”宝石,这不起作用。你必须指定:

config.gem 'simple-navigation', :lib => 'simple_navigation'

查看您需要的宝石的说明,看看他们的路线是否要求您要求不同的东西。 (例如,如果其中一个包含连字符,则它可能会在结果:lib引用中成为下划线。)

答案 1 :(得分:1)

实际上,'gem contents'会列出gem中的文件,这将为您提供线索。

答案 2 :(得分:1)

我找到正确库的经过验证的方法(如果没有包含在自述文件中,我经常发现这种情况)就是运行

宝石规格

然后查看文件列表,尤其是在lib /目录中。通常名字最接近宝石的那个是我正在寻找的那个。显然这不是100%可靠,但它对我有用。

例如gem spec ruby​​-plsql给出

--- !ruby/object:Gem::Specification 
name: ruby-plsql

....    

extra_rdoc_files: 
- History.txt
- License.txt
- README.txt
files: 
- History.txt
- License.txt
- README.txt
- lib/oradate_patch.rb
- lib/plsql/connection.rb
- lib/plsql/jdbc_connection.rb
- lib/plsql/oci_connection.rb
- lib/plsql/package.rb
- lib/plsql/procedure.rb
- lib/plsql/schema.rb
- lib/ruby_plsql.rb
- lib/ruby_plsql/version.rb
- spec/plsql/package_spec.rb
- spec/plsql/procedure_spec.rb
- spec/plsql/schema_spec.rb
- spec/spec.opts
- spec/spec_helper.rb
has_rdoc: true
homepage: http://ruby-plsql.rubyforge.org
licenses: []

....

rubyforge_project: ruby-plsql
rubygems_version: 1.3.4
signing_key: 
specification_version: 2
summary: ruby-plsql gem provides simple Ruby API for calling Oracle PL/SQL procedures.
test_files: []

我看到了

LIB / ruby​​_plsql.rb

由于gem名为ruby-plsql,我猜它可能是主要的lib文件。您还可以检查.gemspec文件以查看它正在构建的内容。

答案 3 :(得分:1)

宝石需要帮助