对于我的应用程序,我需要处理加密的ZIP文件。尽管他们的网站看起来很恐怖,但看来Chilkat的commercial Zip gem可能是实现此目标的最佳方法。
由于这是一种商业宝石,因此在Bundler观察的任何典型宝石来源中都没有。我能够在Mac OS X上安装gem的Linux 64位版本(尽管我还没有尝试运行它,因此尚无消息是否真的可行)。但是,我首先要让Bundler识别并从我下载的.gem文件中加载gem。
Bundler有一个path attribute,我已经尝试通过多种方式使用它,但是我还没有使它起作用:
这是我得到的错误:
$ bundle install
Fetching source index for http://rubygems.org/
Fetching source index for http://gems.github.com/
Could not find gem 'chilkat (>= 0, runtime)' in source at /Users/username/appname/vendor/cache/chilkat-9.1.0-x86_64-linux.
Source does not contain any versions of 'chilkat (>= 0, runtime)'
关于如何让Bundler看到该目录中确实存在该宝石的任何想法?除了path属性之外,其他任何选项似乎都不起作用?
非常感谢!
gem 'mygem', :path => '/path/to/gem'
通过指定版本号解决:
gem 'mygem', '0.0.1', :path => '/path/to/gem'
将>=0.0.1
用于该版本已还原为原始错误。但是,我无法解释这些。
在Gemfile手册页上引用JD的有用评论:“类似于:git选项的语义,:path选项要求所涉及的目录包含gem的.gemspec,或者您指定一个显式版本该捆绑软件应该使用的。“
gem unpack my-gem-file.gem /my-rails-app/vendor/gems/
然后将这样的行添加到您的Gemfile中
gem 'my-gem', '0.0.1', :path => 'vendor/gems/my-gem'
显然,路径和版本号会有所不同。如果还不存在,则可能还需要在应用程序根目录中建立vendor / gems目录。
bundle install --local
这将安装本地gem。
另一种方法是设置自己的gem服务器,供所有应用程序服务器访问。参见http://guides.rubygems.org/run-your-own-gem-server/
我从未亲自做过,但看起来很简单。只要确保您的gem服务器将在Internet上,您都不会违反任何Chilkat服务条款即可。
Gem::Specification.new do |s|
s.name = "chilkat"
s.version = "9.4.1"
s.platform = Gem::Platform::RUBY
s.required_rubygems_version = ">= 1.3.6"
s.files = Dir.glob("lib/**/*")
s.require_path = "lib"
s.summary = "Make do with a self written gemspec"
end