【问题标题】:Attemping to vendorize a gem into bundler with Rails 3, but Gem has no Gemspec尝试使用 Rails 3 将 gem 供应到 bundler 中,但 Gem 没有 Gemspec
【发布时间】:2011-02-11 15:50:25
【问题描述】:

按照这些简单的步骤:

gem unpack spree_easy_contact -v 1.0.2 --target vendor/gems

Unpacked gem: '../vendor/gems/spree_easy_contact-1.0.2'

然后在我的 Gemfile 中添加这一行:

gem "spree_easy_contact", :path => "vendor/gems/spree_easy_contact-1.0.2"

但是当我运行bundle install 时它失败了。

Could not find gem 'spree_easy_contact (>= 0, runtime)' in source at vendor/gems/spree_easy_contact-1.0.2.
Source does not contain any versions of 'spree_easy_contact (>= 0, runtime)'

我相信这是因为 gem 中没有 gemspec 文件。有没有办法为它构建一个?

有人知道解决这个问题的方法吗?

【问题讨论】:

  • vendored gem 是否在 vendor/gems/spree_easy_contact-1.0.2 中?对我来说,它通常没有版本号......所以我希望 vendor/gems/spree_easy_contact
  • 有人说如果你不指定版本就不会创建 gemspec 文件。我尝试了这两种方法都无济于事。奇怪的是,Bundler 可以在没有 gemspec 文件的情况下从 Gems 目录安装它。所以你说的可能是真的。
  • 还有 gemspec 文件吗? spree_easy_contact.gemspec 之类的?
  • 不,没有。我现在正试图通过复制和粘贴 Wirble 并更改其值来打造一个,但它不相信我。

标签: ruby-on-rails gem bundler gemspecs


【解决方案1】:

我忘记在我的 Gem 中留下版本了!超级重要:

gem "spree_easy_contact", '1.0.2', :path => "#{File.expand_path(__FILE__)}/../vendor/gems/spree_easy_contact-1.0.2"

这也很奇怪..这个 Gem 还需要蜜罐验证码,所以我必须将它包含在我的 Gemfile 中。一切都很好。

【讨论】:

  • 这对我也有用!我编辑了我的 Gemfile 并将版本号附加到 gem 文件夹名称中。此外,没有复杂的路径似乎没问题:gem 'streama', '0.3.2', path: 'vendor/gems/streama-0.3.2'
【解决方案2】:

【讨论】:

  • 递归错误。因为没有 gemspec,如果我运行 rake gemspec:generate,它会告诉我需要运行 bundle install。 Could not find gem 'spree_easy_contact (>= 0, runtime)' in source at vendor/gems/spree_easy_contact-1.0.2. Source does not contain any versions of 'spree_easy_contact (>= 0, runtime)' Try running bundle install.
猜你喜欢
  • 1970-01-01
  • 2016-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-07
  • 1970-01-01
  • 2011-06-13
  • 1970-01-01
相关资源
最近更新 更多