我正在使用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 install
it。
但是,如果要在项目中为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/