如果Bundler在非标准路径中安装gem,我如何访问这些gems以及它们附带的任何bin文件?

时间:2011-03-01 23:34:36

标签: ruby capistrano rvm

我正在使用Capistrano部署Rails 3应用程序。我已经在远程服务器(以及本地)上运行RVM,而Bundler正在管理我的所有宝石。这是问题所在:

部署时,Capistrano运行以下命令:

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

所以,我的所有宝石都在/var/www/shared/bundle,好吧。但是,这意味着系统路径中没有安装任何宝石(即,运行gem list不返回任何内容),因此我无法使用这些宝石可能附带的任何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应该为我照顾这个......也许有一个我缺少的环境变量?

感谢您的帮助!

2 个答案:

答案 0 :(得分:5)

捆绑背后的想法是,它将安装您项目所需的宝石的本地副本,而不会影响系统范围的宝石。

如果您希望完全访问rails应用之外的内容,则需要手动gem install

但是,如果您要在项目中为gem运行bin文件(例如,您的Gemfile中包含gem "thin",并且您希望能够运行thin start对于该项目),您可以使用bundle exec并运行捆绑版本:

bundle exec thin start

答案 1 :(得分:0)

我更喜欢使用:

bundle install --path binpaths
相关问题