Tag: 捆绑器

安装了Rails 3.1 gem的环境中的Bundler错误

我已经安装了Rails 3.0.10和3.1,因为我试图将它们用于两个不同的项目。 在我的Rails 3.0.10项目中,我在Gemfile的顶部有以下内容: gem ‘rails’, ‘3.0.10’ 但是,运行bundle install; bundle exec rails –version bundle install; bundle exec rails –version ,我得到以下内容: /Users/bradley/.rbenv/versions/ree-1.8.7-2011.03/lib/ruby/gems/1.8/gems/bundler-1.0.21/lib/bundler/runtime.rb:31:in `setup’: You have already activated activesupport 3.1.1, but your Gemfile requires activesupport 3.0.10. Using bundle exec may solve this. (Gem::LoadError) from /Users/bradley/.rbenv/versions/ree-1.8.7-2011.03/lib/ruby/gems/1.8/gems/bundler-1.0.21/lib/bundler/runtime.rb:17:in `setup’ from /Users/bradley/.rbenv/versions/ree-1.8.7-2011.03/lib/ruby/gems/1.8/gems/bundler-1.0.21/lib/bundler.rb:110:in `setup’ from /Users/bradley/.rbenv/versions/ree-1.8.7-2011.03/lib/ruby/gems/1.8/gems/bundler-1.0.21/lib/bundler/cli.rb:340:in `exec’ from /Users/bradley/.rbenv/versions/ree-1.8.7-2011.03/lib/ruby/gems/1.8/gems/bundler-1.0.21/lib/bundler/vendor/thor/task.rb:22:in `send’ from /Users/bradley/.rbenv/versions/ree-1.8.7-2011.03/lib/ruby/gems/1.8/gems/bundler-1.0.21/lib/bundler/vendor/thor/task.rb:22:in […]

在部署之前检查具有local:path的gems

对于某些Rails应用程序,我希望在部署时有一个安全防范,以检查是否有一些gems配置为在本地路径上查找。 一点上下文可能有助于理解。 当我处于开发模式时,我希望在“本地模式”中拥有一个gem。 在我的Gemfile中,它的配置如下: gem ‘my_gem’, ‘~> 0.9’, :path => ‘./path/to/my_gem’ 。 在制作中,我希望如下: gem ‘my_gem’, ‘~> 0.9’, :git => ‘git@git.example.com:my_gem.git’ 。 我试图创建一个shell脚本(或函数)来读取Gemfile.lock并在gem处于“本地模式”时退出并显示错误。 如果我忘记切换回正确的模式,我的部署脚本可以使用它来中止。 任何帮助将不胜感激。 谢谢

如何重置bundler路径

我成功打破了捆绑! 我在Rails应用程序中乱搞,我做了类似bundle install string事情。 现在我的所有gem都被安装到应用程序中名为“string”的文件夹中。 如何重置bundler以使用我的rvm gemsets的默认路径? 这里的另一篇文章建议使用bundle install –system ,但是这会确保gems被安装到gemsets中吗? 我检查了rvm info ,GEM_HOME和GEM_PATH似乎指向正确的rvm / gemset目录。 所以我很困惑为什么没有将gem安装到正确的位置。 对不起,如果这是一个基本问题,我仍然试图了解这一切是如何工作的。 谢谢你的任何指示。

是否可以要求Gemfile之外的文件?

例如,我正在开发一个gem,当我正在开发时,我使用pry而不是IRB,并使用debugger进行调试。 但是,我不希望可能的贡献者必须安装它们(因为它们可能不需要它们)。 我的第一个想法是将它们放入Bundler组: source :rubygems gemspec group :extras do gem “pry” gem “debugger” end 然后人们可以使用: $ bundle install –without extras 但我希望它是默认的,它们没有安装。 什么是完美的是他们不在我的Gemfile ,但我仍然可以要求它们(如果它们存在于计算机上)。 这个解决方案没问题,因为我不关心它们被锁定的版本。 可以吗?

构建后Gem中缺少文件

TL; DR: 不要在现有的git存储库中运行bundle。 没有任何错误消息会发生奇怪的事情。 原始问题: 我通过调整本教程中的步骤构建了一个gem: http://net.tutsplus.com/tutorials/ruby/gem-creation-with-bundler/ 作为最后一步,我运行了gem build .gemspec 这成功了,但是当我安装gem时,我发现关键文件,包含我的代码的文件,不在gem中。 同一(lib)目录中的另一个文件“version.rb”确实存在于gem中。 我不知道如何开始调试这个… bundler / gem build如何决定哪些文件包含在gem中? 编辑: 我的工作流程是: gem build .gemspec gem unpack => confirm file does not exist in /lib/ gem install => confirm file structure in ~/home/stefan/.rvm/… contains gem, but does not contain desired file 编辑2 /决议 : 我终于能够通过将我的所有代码提交到远程存储库,创建一个干净的克隆以及构建gem来实现这一目标。 新的gem包含了所有必需的文件。 一点历史…我最初创建代码并在考虑制作gem之前提交了它(这是我的第一个gem)。 然后我在原始存储库中使用了bundle,它没有抱怨,但可能是这种奇怪的原因。

使用Gitlab的Ruby Gems没有这样的文件加载 – rb-inotify

我正在使用Gitlab,我正在尝试按照这些说明将我的gitolite v2升级到v3: “如果在2.9.x中出现此问题,您应该重新安装gitolite。 1)备份所有存储库。 只需在其他地方复制/ home / git / repositories / *即可。 2)安装新的gitolite。 请参阅https://github.com/gitlabhq/gitlabhq/blob/master/doc/installation.md 3)复制存储库。 4)sudo -u gitlab -H bundle exec rake gitlab:gitolite:update_keys && sudo -u gitlab -H bundle exec rake gitlab:gitolite:update_repos 就这样。 该步骤还与想要将gitolite v2更新为v3的用户有关“ 我的Gemfile和Gemfile.lock中有rb-inotify,如下所示: gitlabhq@build:~/gitlabhq$ grep notify Gemfile gem ‘rb-inotify’, :require => linux_only(‘rb-inotify’) gitlabhq@build:~/gitlabhq$ grep notify Gemfile.lock rb-inotify (0.8.8) rb-inotify 我正在尝试使用以下命令更新我的密钥和repos,但我总是收到错误“ 没有这样的文件加载–rb-inotify ” […]

获取Bundler项目正在使用的gem列表

有没有办法获得Bundler(它是一个Rails 3)项目为当前项目加载的gem的gem或路径列表。 我正在寻找类似的东西: Gem.path 但是只返回Gemfile中Bundler主动要求的那些。

Bundler抛出没有用于gem安装的文件或目录

在Gemfile中, gem “backup”, :git => “git://github.com/tenmiles/backup.git”, :ref => “develop” n本地和暂存, bundle install确实成功完成。 在生产中,当bundle install –deployment发生时,bundler会抛出此错误 Using backup (3.0.19) from git://github.com/tenmiles/backup.git (at develop) /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:365:in `initialize’: No such file or directory – /home/anand/public_html/myapp/releases/20111113170352/vendor/bundle/ruby/1.9.1/bundler/gems/gems/backup-3.0.19/bin/backup (Errno::ENOENT) 我查了/home/anand/public_html/myapp/releases/20111113170352/vendor/bundle/ruby/1.9.1/bundler/gems/gems/,backup-150fb5168ebe就在那里! 它是通过git安装的gem。 为什么bundler在寻找backup-3.0.19。 如何刷新备份gem并要求bundler从头开始重新安装gem。 请帮忙

使用bundle exec运行rails控制台

当我执行bundle exec rails c我得到一个带有以下提示的ruby控制台 Loading development environment (Rails 3.0.3) jruby-1.6.3 :001 > 一切都按顺序查看,但当我使用↑↓箭头拉我的上一个命令时,我得^[[A^[[B输出到我的控制台。 没有bundle exec运行rails控制台工作正常。 有什么理由说明这是为什么? bundle exec是否会启动一些新的人造壳?

即使我的应用程序使用捆绑包,我是否需要将乘客安装为常规gem?

我试图设置一个新的服务器来托管Rails应用程序,并希望干净安装所有组件,所以我决定使用rvm + bundler。 这是我第一次设置Rails服务器。 我之前使用过捆绑式应用程序,我了解它如何管理应用程序的依赖…但是因为我正在安装Passenger,因为这是托管环境的依赖性,我需要在盒子本身做一个“gem安装乘客”捆绑这种依赖,对吧? 或者我应该将乘客放在应用程序的Gemfile中?