当我运行捆绑安装到sinatra应用程序时,找不到宝石

时间:2016-07-22 08:57:28

标签: ruby sinatra bundler rbenv

我是sinatra的新蜜蜂,我不是像rvm和rbenv这样的ruby管理工具的专家,我有以下问题:当我在我的应用程序中运行捆绑安装时,安装了宝石,我有以下响应"捆绑的宝石安装在./vendor/bundle."但是当我尝试运行我的sinatra应用程序时,显示我没有安装sinatra,当我尝试这个命令行" gem list"时,我也没发现它。

我正在使用rbenv,我不知道如何解决这个问题。当我通过宝石安装宝石像#34;宝石安装sinatra"它运作正常,但它真的很痛苦,所以我的问题是如何解决这个问题?

PS:我试图用rvm来管理我的ruby管理器但是我遇到了问题所以我搬到了rbenv,也许这就是安装宝石的路径

这是我的宝石环境的印刷品:

RubyGems Environment:
 - RUBYGEMS VERSION: 2.5.1
 - RUBY VERSION: 2.3.1 (2016-04-26 patchlevel 112) [x86_64-darwin15]
 - INSTALLATION DIRECTORY:      /Users/laadhari/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0
 - USER INSTALLATION DIRECTORY: /Users/laadhari/.gem/ruby/2.3.0
 - RUBY EXECUTABLE: /Users/laadhari/.rbenv/versions/2.3.1/bin/ruby
 - EXECUTABLE DIRECTORY: /Users/laadhari/.rbenv/versions/2.3.1/bin
 - SPEC CACHE DIRECTORY: /Users/laadhari/.gem/specs
 - SYSTEM CONFIGURATION DIRECTORY:    /Users/laadhari/.rbenv/versions/2.3.1/etc
 - RUBYGEMS PLATFORMS:
 - ruby
 - x86_64-darwin-15
 - GEM PATHS:
  - /Users/laadhari/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0
  - /Users/laadhari/.gem/ruby/2.3.0
 - GEM CONFIGURATION:
  - :update_sources => true
  - :verbose => true
  - :backtrace => false
  - :bulk_threshold => 1000
 - REMOTE SOURCES:
  - https://rubygems.org/
 - SHELL PATH:
  - /Users/laadhari/.rbenv/versions/2.3.1/bin
  - /usr/local/Cellar/rbenv/1.0.0/libexec
  - /Users/laadhari/.rbenv/shims
  - /usr/local/bin
  - /usr/bin
  - /bin
  - /usr/sbin
  - /sbin

我的Gemfile的打印

source 'https://rubygems.org'

gem 'sinatra', '~> 1.4.7'
gem "sinatra-activerecord"
gem 'mysql2'
gem 'rest-client'
gem 'thin'
gem 'rake'

我跑的时候:

gem list

*** LOCAL GEMS ***
...

成功运行bundle install之后,我在本地gems中找不到来自Gemfile的宝石......

1 个答案:

答案 0 :(得分:2)

Bundler的目标之一是不污染全球宝石列表。这是通过不将捆绑的宝石安装到默认位置来实现的。

因此,为了确保您的应用找到捆绑的宝石,您有以下几种选择:

使用bundle exec

启动应用程序时(即使用rackupruby ./app.rb),在命令前加上bundle exec

bundle exec rackup
#=> Thin web server (v1.7.0 codename Dunder Mifflin)
#=> Maximum connections set to 1024
#=> Listening on localhost:9292, CTRL+C to stop
#=> ...

更多信息:https://bundler.io/v1.12/man/bundle-exec.1.html

使用Bundler.setup

在加载依赖项之前(使用require),加载Bunder:

require 'rubygems'
require 'bundler/setup'

# require your gems as usual
require 'sinatra'

更多信息:https://bundler.io/v1.12/bundler_setup.html

来源&进一步阅读

我强烈建议您阅读https://bundler.io/v1.12/#getting-started上的优秀文档。

还有一件事,要找出实际安装了捆绑宝石的位置,请运行以下命令:

bundle config path
#=> Settings for `path` in order of priority. The top value will be used
#=> Set for your local app (/path/to/project/.bundle/config): ".bundle"