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
Gemfile
gem 'redis'
Rakefile.rb
desc 'Try Redis'
task :try_redis do
puts $redis.set("try", 0)
end
熊手は中止されました! NoMethodError:nil:NilClassのための未定義のメソッド `set '
私はSinatraにはあまり慣れていませんが、特に私には悪いことは何もありません。私のグローバル変数$ redisが私のアプリのどこからでもアクセスできない理由がわかりません...
あなたが私を啓発することができるならば、前もってありがとう!
私のグローバル変数$ redisがなぜそうでないのか理解できません 私のアプリのどこからでもアクセス可能
きみのrake
タスクはアプリとは関係ありません。の$redis
実行時にのみ使用可能な変数sinatra
レーキタスクを実行するときには使用できません。のrake
自分で実行するタスク糸。
irb
セッション、および割り当て$foo = 1
一体にしてみてくださいputs $foo
他では。 - Зелёный