Ruby on rails 为什么将redis添加到Gemfile会修复以下错误:require';redis';
我在尝试将redis(2.1.1)gem与rails一起使用时遇到问题。我已经修复了这个问题,但我不知道为什么修复会起作用,我想更好地理解 我用的是雪豹。经过多次故障排除,我删除了Ruby、Rails和RubyGems的版本,然后使用MacPorts安装Ruby 1.8.7补丁级别334和RubyGems 1.6.0。Rails现在是3.0.5版的新安装。使用“which-a”表明路径中只有一个版本的ruby和gem 我创建了一个新的rails应用程序,并添加了一个简单的控制器,代码如下:Ruby on rails 为什么将redis添加到Gemfile会修复以下错误:require';redis';,ruby-on-rails,ruby,rubygems,redis,Ruby On Rails,Ruby,Rubygems,Redis,我在尝试将redis(2.1.1)gem与rails一起使用时遇到问题。我已经修复了这个问题,但我不知道为什么修复会起作用,我想更好地理解 我用的是雪豹。经过多次故障排除,我删除了Ruby、Rails和RubyGems的版本,然后使用MacPorts安装Ruby 1.8.7补丁级别334和RubyGems 1.6.0。Rails现在是3.0.5版的新安装。使用“which-a”表明路径中只有一个版本的ruby和gem 我创建了一个新的rails应用程序,并添加了一个简单的控制器,代码如下: re
require 'rubygems'
require 'redis'
class HomeController < ApplicationController
def index
redis = Redis.new
redis.set "mykey", "myvalue"
end
end
通过irb使用redis gem时不会发生此错误
~/Projects/Rails/myapp Scott $ irb
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'redis'
=> true
irb(main):003:0> r = Redis.new
=> #<Redis client v2.1.1 connected to redis://127.0.0.1:6379/0 (Redis v2.2.1)>
我在这里和其他地方读过许多类似的问题,关于require语句可能失败的原因,但没有找到任何我理解的解释我的情况的东西。如果有帮助,“gem env”返回的gem路径是:
Ruby似乎使用了相同的路径:
~/Projects/Rails/armatree Scott $ irb
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> puts Gem.path
/Users/Scott/.gem/ruby/1.8
/opt/local/lib/ruby/gems/1.8
=> nil
我注意到这两条路径的顺序不同,但是/Users中的路径不包含任何gem
如能提供任何见解,我们将不胜感激。感谢您阅读本文。Bundler禁用系统gems,仅使gem文件中列出的gems(及其依赖项)可供应用程序使用。这就是为什么你的应用程序需要的任何gem都应该在gem文件中的原因 另外值得注意的是,bundler需要宝石,除非您告诉它不要。因此,一旦你告诉它在Gemfile中使用redis gem,你就不需要在应用程序的其他地方使用它
source 'http://rubygems.org'
gem 'rails', '3.0.5'
gem 'sqlite3'
gem 'redis'
RubyGems Environment:
- RUBYGEMS VERSION: 1.6.0
- RUBY VERSION: 1.8.7 (2011-02-18 patchlevel 334) [i686-darwin10]
- INSTALLATION DIRECTORY: /opt/local/lib/ruby/gems/1.8
- RUBY EXECUTABLE: /opt/local/bin/ruby
- EXECUTABLE DIRECTORY: /opt/local/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86-darwin-10
- GEM PATHS:
- /opt/local/lib/ruby/gems/1.8
- /Users/Scott/.gem/ruby/1.8
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- http://rubygems.org/
~/Projects/Rails/armatree Scott $ irb
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> puts Gem.path
/Users/Scott/.gem/ruby/1.8
/opt/local/lib/ruby/gems/1.8
=> nil