Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Sinatra、捆绑机和捆绑路径混乱_Ruby_Rubygems_Sinatra_Bundle_Bundler - Fatal编程技术网

Ruby Sinatra、捆绑机和捆绑路径混乱

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

我在配置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"
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上似乎是一场噩梦。我肯定我做错了什么:(