Ruby Sinatra、捆绑机和捆绑路径混乱
我在配置Sinatra使用Bundler时遇到问题。我不知道Gems应该安装在哪里?这两本书我都读过 我的Ruby Sinatra、捆绑机和捆绑路径混乱,ruby,rubygems,sinatra,bundle,bundler,Ruby,Rubygems,Sinatra,Bundle,Bundler,我在配置Sinatra使用Bundler时遇到问题。我不知道Gems应该安装在哪里?这两本书我都读过 我的Gemfile看起来像: source "http://rubygems.org" gem "sinatra" gem "amazon-ec2" require "rubygems" require "bundler" Bundler.setup require "application" run Sinatra::Application require "rubygems" requi
Gemfile
看起来像:
source "http://rubygems.org"
gem "sinatra"
gem "amazon-ec2"
require "rubygems"
require "bundler"
Bundler.setup
require "application"
run Sinatra::Application
require "rubygems"
require "sinatra"
require "AWS"
#... rest of application
我的config.ru
看起来像:
source "http://rubygems.org"
gem "sinatra"
gem "amazon-ec2"
require "rubygems"
require "bundler"
Bundler.setup
require "application"
run Sinatra::Application
require "rubygems"
require "sinatra"
require "AWS"
#... rest of application
我的application.rb
看起来像:
source "http://rubygems.org"
gem "sinatra"
gem "amazon-ec2"
require "rubygems"
require "bundler"
Bundler.setup
require "application"
run Sinatra::Application
require "rubygems"
require "sinatra"
require "AWS"
#... rest of application
现在,当我运行bundle install
时,一切正常,Gems安装到我的主目录中的~/.bundle/
。然而,在我的应用程序中,如果我看一下.bundle/config
,它会显示:
---
BUNDLE_WITHOUT: ""
BUNDLE_PATH: vendor/gems
果不其然,当我启动应用程序时(顺便说一下使用Passenger),它会说:
显然,
bundle install
将Gems安装到了Sinatra期望的不同位置。这是否意味着我必须使用bundle安装供应商
或重新配置其他东西,以便应用程序期望Gems位于~/.bundle
?在@aaronrussell最初发布后大约一年,我遇到了乘客、Nginx、Bundler、Sinatra的相同问题。我是通过在生产中运行以下程序来完成的:
bundle install --deployment
捆绑宝石进入/供应商/捆绑
以下是您使用的bundler版本的一些详细信息我使用的是0.9.26。我总是将gems显式地放在
vendor/gems
中,而不是使用bundle install vendor/gems
将gems放在我的主目录中,从而在本地运行。然而,我也有一个魔鬼自己的工作让它部署到我的服务器上-Sinatra似乎无法从系统位置加载一些gem,同时从vendor/gems
加载一些gem-AFAICT,所有gem都需要从同一位置加载。Bundler在Rails 3上毫不费力地工作,但在Sinatra上似乎是一场噩梦。我肯定我做错了什么:(