- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
只是出于好奇...在我之前的帖子Rails3.1 engine: can't get SLIM or HAML to work in test/dummy app我问在哪里告诉 Ruby 在我的 test/dummy
中使用一些 gem应用。
(显而易见的?)答案是将其放入我的引擎的 Gemfile 中。这行得通,但它让我有点不舒服,因为在 Yehuda Katz 的帖子 Clarifying the Roles of the .gemspec and Gemfile他提到...
...when developing a gem, the Gemfile "a gem’s Gemfile should contain the Rubygems source and a single gemspec line".
rails plugin new my_engine
生成)中有:
# jquery-rails is used by the dummy application
gem "jquery-rails"
config/application.rb
中所需的 gem ,而 https://stackoverflow.com/questions/5159607/rails-engine-gems-dependencies-how-to-load-them-into-the-application 它被告知最好放入
lib/<your_engine>/engine.rb file
.
test/dummy
为什么不呢? app 会自动要求
.gemspec
中指定的所有 Gems文件?我们甚至通过显式使用
add_dependency
告诉 gem,哪些 gem 用于生产,哪些用于开发模式。和
add_development_dependency
,所以我看不出有什么原因
test/dummy
不这样做。
test/dummy
中,我必须在哪里告诉 Ruby 使用 gem?应用程序?我不想强制 Ruby 在主机应用程序中也使用 gem 。
最佳答案
我认为正确的方法如下:
引擎是一个普通的 gem 。开发 gem 时,将其依赖项放在 gemspec
中。文件。如果您使用 bundle,作为开发人员,您可以创建一个 .lock
具有特定版本的文件,您没有问题。但是在 gemspec
中声明了该依赖项还不够用,还得require
它们在您的 gem 代码中。当需要它们时,如果 gem 与 bundle 一起使用,.lock
使用版本。
在引擎中,与任何其他 gem 一样,它是相同的。您在 gemspec
中定义您的依赖关系。文件,然后运行 bundle install
但仅仅使用它们是不够的。例如,您必须在 lib/my_engine.rb
中要求它们。 .
例如:
# File: my_engine.rspec
# ...
s.add_dependency `slim_rails`, ' ~>1.0'
# File: lib/my_engine.rb
require "my_engine/engine"
require "slim-rails"
module MyEngine
end
Gemfile
中设置,我不确定为什么使用它们没有更多麻烦。 , 但作为
rails documentation说:
Gem dependencies inside an engine should be specified inside the .gemspec file at the root of the engine. The reason is that the engine may be installed as a gem. If dependencies were to be specified inside the Gemfile, these would not be recognized by a traditional gem install and so they would not be installed, causing the engine to malfunction.
关于ruby-on-rails - Rails 3.1 引擎 : Difference of my_engine. gemspec、add_dependency、add_development_dependency 和 Gemfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12509646/
当您编写 gemspec 文件时,摘要和描述字段之间的实际区别是什么? 最佳答案 它们用在不同的地方。 summary 可以看到你执行 gem list -d,而 description 可以在 ht
当我从 github 安装 gem 时,它给了我错误: number_internationalizer at /usr/local/rvm/gems/ruby-1.9.3-p194@number_i
我正在编写一个依赖于另一个 gem X 的 gem,但是 X 具有与我的 gem 的依赖项冲突的过时依赖项。 (具体来说,multi_json-1.7.x和X的multi_json-1.1.x有冲突)
rubygems 想知道我的开发依赖项是什么,这似乎是一个奇怪的功能,到目前为止,我从未见过它用于在运行 gem 测试时实际加载这些依赖项。 最佳答案 如果有人出于某种原因决定破解您的 gem,例如他
当我在 Gemfile 中包含我制作的 gem 时,感谢 Bundler(版本 1.0.12),然后我尝试像这样 bundle 或抓取: $ 佣金 我收到此错误消息: Invalid gemspec
当我尝试在 Windows 中使用 gems 时,出现以下错误,我也提到了 this stackoverflow post并更新了 rubygems 和 Rails。但没有什么能解决问题。 以下是
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Meaning of tilde-greater-than (~>) in version requirem
当我尝试在 Windows 中使用 gems 时出现以下错误,我还提到了 this stackoverflow post并更新了 rubygems 和 rails。但没有什么能解决问题。 下面是完
bundler since v1.7当在 gemfile 中指定多个全局源时发出警告。您可以使用 source blocks指定哪些 gem 应该来自给定的来源,但是 source个别 gem 的选项
我正在构建一个使用 rails-assets-growl gem 的 gem。可以使用 不同于 'https://rubygems.org' 的源将此 gem 添加到我的 Gemfile,如下所示:
我正在构建一个需要安装 json gem 才能运行的 gem。哪个 json gem 并不重要:json_pure、json-jruby 或基于 C 的 json。 是否有在 gemspec 中定义它
有没有一种干净的方法可以从 .gemspec 文件中提取版本字符串? (gem 尚未安装) 例如somethingcool.gemspec 是 Gem::Specification.new do |s
我几乎做了所有的事情this instruction告诉我这样做,但我遇到了一系列错误。这是日志: stanley@ubuntu:~$ mkdir railstest stanley@ubuntu:~
对于 Linux 上的 Ruby 新用户来说,没有将 openssl 编译到他们的 Ruby 中是一个相对常见的错误。我们有一个需要'openssl'的gem,每隔一段时间它就会在'openssl'上
在过去的几个月里,Ruby 依赖管理和 gem 创建的状态有了一些快速的发展,以至于我一直难以跟上一切。 如果我正在编写一个新的 gem,我用来创建我的 gemspec 的最佳工具是什么?与竞争对手相
我的 gem 中需要私有(private) gem,并且 gemspec 依赖项不能包含 git 存储库。 所以我用 geminabox 启动了我的私有(private)服务器,并将源代码添加到我的
关于 gemspecs 的文件列表。 我注意到珠宝商使用项目中的文件列表手动更新此列表。例如 Gem::Specification.new do |s| # stuff s.files = [
每当开发 gems 时,我看不出有任何理由不直接检查 Gemfile 的依赖关系。 的确,为什么要使用 .gemspec 文件来列出它们?有真正的好处吗? 最佳答案 那是因为 Gemfile 不是来自
我正在开发一个 gem(Gem A),它使用我也编写的另一个 gem(Gem B)。至此 Gem B 已添加到 Gem A 的 gemspec 中: gem.add_dependency "gem_a
例如,给定 Gemspec 文件: $:.push File.expand_path("../lib", __FILE__) # Maintain your gem's version: requir
我是一名优秀的程序员,十分优秀!