我正在使用capistrano部署rails 3应用程序。我已经让rvm运行在远程服务器(以及本地服务器)上,bundler正在管理我所有的gem。问题是:
部署时,capistrano运行以下命令:

bundle install --gemfile /var/www/releases/20110301225633/Gemfile --path /var/www/shared/bundle --deployment --quiet --without development test

所以,我所有的宝石都在/var/www/shared/bundle里,好吧。但是,这意味着系统路径中没有安装gems(即,运行gem list不会返回任何内容),因此我不能使用这些gems附带的任何bin文件,包括rails命令本身。我能够启动web服务器(瘦)的唯一方法是手动gem install thin。一旦细线绕起来,它就可以很好地启动rails,包括它所需的所有宝石。
那么,我如何才能在我的跑步应用程序之外访问这些宝石呢?我知道我不应该手动安装任何东西来让它工作,但我不知道我缺少了什么。我试过运行rvm-shell '1.9.2@mygemset' -c 'thin start',但得到的错误与直接从命令行调用thin start的错误相同:bash: thin: command not found即使直接转到bundler的bin目录/var/www/shared/bundle/bundle/ruby/1.9.1/bin启动thin也会给出相同的错误。
我觉得rvm应该帮我处理这个…也许我遗漏了一个环境变量?
谢谢你的帮助!

最佳答案

捆绑背后的想法是,它将安装项目所需gems的本地副本,而不会影响整个系统gems。
如果您想要完全访问rails应用程序之外的内容,则需要手动gem installit。
但是,如果要在项目中为gem运行bin文件(例如,您的Gemfile中包含gem "thin",并且您希望能够为该项目运行thin start),则可以使用bundle exec,它将运行捆绑版本:

bundle exec thin start

关于ruby - 如果Bundler在非标准路径中安装gems,我如何访问这些gems及其随附的任何bin文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5161737/

10-13 05:21