我想在我的Sinatra应用中使用Redis。虽然我可以在本地和远程(heroku)的控制台中访问Redis实例,但是当我想在rake任务中使用它时,会触发错误,我似乎无法理解为什么。
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的未定义方法`set':NilClass
我并不习惯Sinatra,对我来说没什么特别错的。我不明白为什么我的全局变量$ redis无法从我的应用程序的任何地方访问...
如果你能开导我,请提前谢谢你!
答案 0 :(得分:1)
我不明白为什么我的全局变量$ redis不会 可从我的应用程序中随处访问
您的rake
任务与您的应用无关。 $redis
变量仅在运行sinatra
服务器时可用,在运行rake任务时不可用。 rake
任务在自己的线程中运行。