【发布时间】:2013-05-24 04:40:23
【问题描述】:
在我的 Heroku/Sinatra 应用程序中,我使用 Ruby 1.8.7 设置了我的 gemfile,然后使用 RVM 将我的默认设置为 2.0.0。现在,当我尝试安装任何新的 gem,例如 Sinatra-flash 或 Pony 时,当我在 main.rb 文件中需要它们时,无法识别或找到这些 gem。
当我在 gemfile 中添加 gem "pony" 时,我收到一条弹出消息:
Gem 'pony' is not available in SDK 'ruby-1.8.7-p385'
即使我已经安装了它。当我在终端中输入gem list 时,它会返回我已安装但未被识别为已安装在我的程序中的所有 gem。
如果我在 main.rb 中添加 require 'sinatra/flash' 或 require 'pony',我会收到一条消息:
no such file to load
非常感谢您对此的任何帮助,这让我发疯了。
已编辑:
使用命令sudo gem install 'gemname'
当我输入rvm info 时,我会返回
ruby :
interpreter: "ruby"
version: "2.0.0p195"
date: "2013-05-14"
platform: "x86_64-darwin12.3.0"
patchlevel: "2013-05-14 revision 40734"
full_version: "ruby 2.0.0p195 (2013-05-14 revision 40734) [x86_64-darwin12.3.0]"
homes:
gem: "/Users/adam419/.rvm/gems/ruby-2.0.0-p195"
ruby: "/Users/adam419/.rvm/rubies/ruby-2.0.0-p195"
binaries:
ruby: "/Users/adam419/.rvm/rubies/ruby-2.0.0-p195/bin/ruby"
irb: "/Users/adam419/.rvm/rubies/ruby-2.0.0-p195/bin/irb"
gem: "/Users/adam419/.rvm/rubies/ruby-2.0.0-p195/bin/gem"
rake: "/Users/adam419/.rvm/gems/ruby-2.0.0-p195@global/bin/rake"
environment:
PATH: "/Users/adam419/.rvm/gems/ruby-2.0.0-p195/bin:/Users/adam419/.rvm/gems/ruby-2.0.0-p195@global/bin:/Users/adam419/.rvm/rubies/ruby-2.0.0-p195/bin:/Users/adam419/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/local/git/bin/[["
GEM_HOME: "/Users/adam419/.rvm/gems/ruby-2.0.0-p195"
GEM_PATH: "/Users/adam419/.rvm/gems/ruby-2.0.0-p195:/Users/adam419/.rvm/gems/ruby-2.0.0-p195@global"
MY_RUBY_HOME: "/Users/adam419/.rvm/rubies/ruby-2.0.0-p195"
IRBRC: "/Users/adam419/.rvm/rubies/ruby-2.0.0-p195/.irbrc"
RUBYOPT: ""
gemset: ""
编辑:在我输入“rvm use ruby-2.0.0”然后输入“bundle install”后
我明白了;
Adams-MacBook-Pro:songs adam419$ rvm use ruby-2.0.0
Using /Users/adam419/.rvm/gems/ruby-2.0.0-p195
Adams-MacBook-Pro:songs adam419$ bundle install
Fetching gem metadata from https://rubygems.org/.........
Fetching gem metadata from https://rubygems.org/..
Resolving dependencies...
Could not find gem 'sinatra/flash (>= 0) ruby' in the gems available on this machine.
从 gem "sinatra/flash" 更改为 gem "sinatra-flash" 然后运行 bundle install 后
Fetching gem metadata from https://rubygems.org/.........
Fetching gem metadata from https://rubygems.org/..
Resolving dependencies...
Enter your password to install the bundled RubyGems to your system:
Using addressable (2.2.8)
Installing daemons (1.1.9)
Using data_objects (0.10.12)
Using dm-core (1.2.0)
Using dm-do-adapter (1.2.0)
Installing dm-migrations (1.2.0)
Using do_sqlite3 (0.10.12)
Using dm-sqlite-adapter (1.2.0)
Installing eventmachine (1.0.3)
Using rack (1.5.2)
Using rack-protection (1.5.0)
Using sass (3.2.9)
Using tilt (1.4.1)
Using sinatra (1.4.2)
Using sinatra-flash (0.3.0)
Installing temple (0.6.5)
Installing slim (1.3.9)
Installing thin (1.5.1)
Using bundler (1.3.5)
Your bundle is complete!
Gems in the group production were not installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.
当前 Gemfile
source 'https://rubygems.org'
gem "sinatra"
gem "slim"
gem "sass"
gem "dm-core"
gem "sinatra-flash"
gem "dm-migrations"
gem "thin"
gem "pg", :group => :production
gem "dm-postgres-adapter", :group => :production
gem "dm-sqlite-adapter", :group => :development
Gemlock 文件依赖项
DEPENDENCIES
dm-core
dm-migrations
dm-postgres-adapter
dm-sqlite-adapter
pg
sass
sinatra
sinatra-flash
slim
thin
【问题讨论】:
-
我认为由于某种原因,当我将默认值从 1.8.7 更改为我正在使用的 mac os x 上的库存时,我正在安装的所有新 gem 都应用于旧版本而不是ruby-2.0.0-p195 正在使用我现在设置为默认值。
-
您缺少一些基本信息,例如“您使用什么命令来安装新的 gem?”此外,在命令行中输入
rvm info并通过编辑将该信息附加到您的问题中。 -
尝试用
rvmsudo gem install pony运行它 -
rvmsudo是个坏主意。只需运行gem install即可避免麻烦。