1

我尝试使用 environment.rb 中的指令向我的 Rails 应用程序添加一些 gem,config.gem以便当应用程序部署到新系统上时,可以解决缺少 gems 的问题rake gems:install

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

environment.rb 中的评论说

# You have to specify the :lib option for libraries, where the Gem name (sqlite3-ruby) differs from the file itself (sqlite3)

我几乎可以肯定我错过了其中一个 gem 的 :lib 选项,如何找到 gem 是一个库和它的库名称?

4

4 回答 4

5

并不是说有“图书馆宝石”和“非图书馆宝石”。而是 Rails 自动require将所有由config.gem. Rails 知道需要什么的方式就是您使用:lib. 如果您不指定任何内容,它会尝试要求提供 gem 的名称。

例如:

config.gem 'simple-navigation'

将需要“简单导航”gem,它不起作用。您必须改为指定:

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

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

于 2009-11-20T12:20:04.053 回答
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 文件以查看它的构建目标。

于 2009-11-20T13:55:54.917 回答
1

需要的宝石有帮助

于 2009-12-02T04:13:36.957 回答
1

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

于 2010-02-05T21:35:38.997 回答