레일이있는 redis (2.1.1) gem을 사용하는 데 문제가있었습니다. 문제를 해결했지만 해결 방법이 왜 효과가 있고 더 잘 이해하고 싶은지 잘 모르겠습니다.Gemfile에 redis를 추가하면 왜 오류가 수정됩니까? 'redis'가 필요합니다.
스노우 레오파드를 사용하고 있습니다. 많은 문제를 해결 한 후에 Ruby, Rails 및 RubyGems 버전을 제거한 다음 MacPorts를 사용하여 Ruby 1.8.7 패치 레벨 334 및 RubyGems 1.6.0을 설치했습니다. Rails는 이제 3.0.5 버전의 새로운 설치입니다. "which -a"를 사용하면 경로에 하나의 버전의 루비와 보석 만 있음을 알 수 있습니다.
나는 새로운 레일 응용 프로그램을 만들고 다음 코드를 사용하여 간단한 컨트롤러를 추가 :require 'rubygems'
require 'redis'
class HomeController < ApplicationController
def index
redis = Redis.new
redis.set "mykey", "myvalue"
end
end
나는 "레일 서버"로드 페이지 http://localhost:3000/home/index을 시작할 때, 나는 다음과 같은 오류 메시지가 얻을 :
을LoadError in HomeController#index
no such file to load -- redis
Rails.root: /Users/Scott/Projects/Rails/myapp
Application Trace | Framework Trace | Full Trace
app/controllers/home_controller.rb:2
This error occurred while loading the following files:
redis
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)>
내 레일 앱에서이 문제를 해결할 수있는 유일한 방법은 Gemfile에 redis를 추가하는 것입니다. "rails new myapp"로 만든 기본 Gemfile 파일을 변경 한 후에 다른 작업을 수행하지 않습니다. 페이지를 다시로드하기 만하면 작동합니다.
source 'http://rubygems.org'
gem 'rails', '3.0.5'
gem 'sqlite3'
gem 'redis'
내가 여기와 다른 곳은 문이 실패 할 수 있습니다 필요로하지만 내 상황을 설명하는 것으로 이해 한 아무것도 발견하지 않은 이유에 대해 많은 유사한 질문을 읽었습니다. 경우는 도움이된다 "보석 ENV"에 의해 반환 된 보석 경로는 다음과 같습니다 나는 두 개의 경로가 다른 순서에있는 것을 알 수
~/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
:
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/
루비는 동일한 경로를 사용하고있는 것으로 나타납니다 ,/Users의 경로에는 젬이 포함되어 있지 않습니다.
제공 할 수있는 통찰력은 인정됩니다. 지금까지 읽어 주셔서 감사드립니다.
Perfect. 감사. Bundler에 대해 자세히 알아 보려면 끄기 :) – Scott