我正在使用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应该为我照顾这个......也许有一个我缺少的环境变量?
感谢您的帮助!
答案 0 :(得分:5)
捆绑背后的想法是,它将安装您项目所需的宝石的本地副本,而不会影响系统范围的宝石。
如果您希望完全访问rails应用之外的内容,则需要手动gem install
。
但是,如果您要在项目中为gem运行bin文件(例如,您的Gemfile
中包含gem "thin"
,并且您希望能够运行thin start
对于该项目),您可以使用bundle exec
并运行捆绑版本:
bundle exec thin start
答案 1 :(得分:0)
我更喜欢使用:
bundle install --path binpaths