she*_*edd 33 ruby rubygems ruby-on-rails bundler
对于我的应用程序,我需要处理加密的ZIP文件.尽管看起来可怕的网站,但似乎Chilkat的商业Zip宝石可能是实现这一目标的最佳方式.
因为这是一个商业宝石,所以他们没有在Bundler看到的任何典型宝石资源中使用它.我能够在Mac OS X下安装Linux 64位版本的gem(虽然我还没有尝试过运行它,所以还没有任何关于它是否真的有用的话).但是,我首先尝试让Bundler从我下载的.gem文件中识别并加载gem.
Bundler有一个路径属性,我试图在几个方面使用它,但我还没有让它工作:
这是我得到的错误:
$ 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)'
Run Code Online (Sandbox Code Playgroud)
关于如何让Bundler看到gem确实在这个目录中的任何想法?路径属性以外的任何其他选项似乎都不起作用?
非常感谢!
ace*_*des 72
我正在使用Rails 3.0.3,Rails 3和bundler的新功能.
我得到了同样的错误:
gem 'mygem', :path => '/path/to/gem'
Run Code Online (Sandbox Code Playgroud)
通过指定版本号解决:
gem 'mygem', '0.0.1', :path => '/path/to/gem'
Run Code Online (Sandbox Code Playgroud)
使用>=0.0.1的版本恢复到原来的错误.但是,我无法解释任何这一点.
引用JD有用的提交,来自Gemfile手册页:"类似于:git选项的语义,:path选项要求相关目录包含gem的.gemspec,或者指定Bundler的显式版本应该用."
sem*_*art 10
尝试解压缩gem,然后使用Gemfile中的路径.
即
gem unpack my-gem-file.gem /my-rails-app/vendor/gems/
Run Code Online (Sandbox Code Playgroud)
然后在你的Gemfile中添加一行这样的行
gem 'my-gem', '0.0.1', :path => 'vendor/gems/my-gem'
Run Code Online (Sandbox Code Playgroud)
显然路径和版本号会有所不同.您还可能需要在应用程序根目录中创建vendor/gems目录(如果该目录尚不存在).
将gem复制到应用程序根文件夹中的vendor/cache目录.
bundle install --local
Run Code Online (Sandbox Code Playgroud)
这将安装本地gem.