내 Sinatra 앱에서 Redis 사용자에게 알려 드리고 싶습니다. 로컬 및 원격 (heroku)의 콘솔에서 Redis 인스턴스에 액세스 할 수 있지만 갈퀴 작업에서 사용할 때 오류가 발생하고 이유는 알 수 없습니다.
app.rb :
class MyApp < Sinatra::Base
configure do
uri = URI.parse(ENV["REDISCLOUD_URL"])
$redis = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)
end
end
config.ru :
require 'rubygems'
require 'sinatra'
require './app'
run MyApp
젬 파일
gem 'redis'
Rakefile.rb
desc 'Try Redis'
task :try_redis do
puts $redis.set("try", 0)
end
레이크가 중단되었습니다! NoMethodError : 정의되지 않은 메소드 set for nil : NilClass
나는 Sinatra에 익숙하지 않고, 아무것도 나에게 잘못 보지 않습니다. 왜 내 글로벌 변수 $ redis 내 애플 리케이션의 모든 곳에서 액세스 할 수 없을 것이라고 이해가 안 돼요 ...
나에게 계몽 할 수 있다면, 미리 감사드립니다!
왜 글로벌 변수 $ redis가되지 않을지 이해하지 못합니다. 내 앱에서 어디에서나 액세스 할 수 있습니다.
너의rake
작업이 앱과 관련이 없습니다. 그만큼$redis
변수는 실행할 때만 사용할 수 있습니다.sinatra
서버에 저장되며 레이크 작업을 실행할 때는 사용할 수 없습니다. 그만큼rake
자신이 수행하는 작업실.
irb
세션, 할당$foo = 1
하나를 시도하고puts $foo
다른. - Зелёный