在Gemfile中使用'gemspec'时,我该怎么做:require =>'foo'

gdu*_*duq 18 ruby-on-rails bundler ruby-on-rails-3

gem有一些开发依赖项,如ruby-debug19和sqlite3-ruby,其中gem名称和require不同.我们使用:require =>'foo'选项在Gemfile中处理这个问题.

例如

gem "sqlite3-ruby", :require => "sqlite3"
gem 'ruby-debug19', :require => 'ruby-debug'
Run Code Online (Sandbox Code Playgroud)

我们试图将所有这些移动到gemspec文件并使用Gemfile中的'gemspec'指令.

在gemspec中,这些变为:

s.add_development_dependency "sqlite3-ruby"
s.add_development_dependency 'ruby-debug19'
Run Code Online (Sandbox Code Playgroud)

有没有办法在使用s.add_dependency时提供:require =>选项?

Sim*_*tti 14

不,你不能,你仍然需要覆盖Gemfile中的值.

source "http://rubygems.org"

gem 'ruby-debug19', :require => 'ruby-debug'

# Specify your gem's dependencies in .gemspec
gemspec
Run Code Online (Sandbox Code Playgroud)

小提示:如果您使用sqlite3gem而不是sqlite3-ruby(实际上是相同的),那么您不需要指定不同的require.

  • 所以我想如果我们想要`require:false`一个开发依赖,那么我们需要首先在gemspec中指定gem作为开发依赖项,然后将它作为开发依赖项添加到Gemfile中并且`require:false`? (2认同)