我尝试使用environment.rb中的config.gem
指令向我的Rails应用添加一些宝石,这样当应用程序部署在新系统上时,可以使用{{1来处理丢失的宝石问题}}
添加我的应用所依赖的所需宝石列表后,我的应用无法启动。如果我从environment.rb文件中删除所需的gem列表,那么应用程序就可以正常运行。
environment.rb中的评论说
rake gems:install
我非常肯定我错过了其中一个宝石的:lib选项,如果宝石是一个库,它是如何找到的?它是什么?
答案 0 :(得分:5)
不是有“图书馆宝石”和“非图书馆宝石”。相反,Rails自动require
由config.gem
加载的所有宝石。 Rails知道要求的方式是您使用:lib
指定的方式。如果您没有指定任何内容,它会尝试要求gem的名称。
例如:
config.gem 'simple-navigation'
将需要“简单导航”宝石,这不起作用。你必须指定:
config.gem 'simple-navigation', :lib => 'simple_navigation'
查看您需要的宝石的说明,看看他们的路线是否要求您要求不同的东西。 (例如,如果其中一个包含连字符,则它可能会在结果:lib
引用中成为下划线。)
答案 1 :(得分: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: []
我看到了
由于gem名为ruby-plsql,我猜它可能是主要的lib文件。您还可以检查.gemspec文件以查看它正在构建的内容。
答案 2 :(得分:1)
宝石需要帮助
答案 3 :(得分:1)
实际上,'gem contents'会列出gem中的文件,这将为您提供线索。