Redis没有在sinatra rake任务中工作

时间:2015-08-06 20:24:42

标签: ruby redis gem sinatra rake

我想在我的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无法从我的应用程序的任何地方访问...

如果你能开导我,请提前谢谢你!

1 个答案:

答案 0 :(得分:1)

  

我不明白为什么我的全局变量$ redis不会   可从我的应用程序中随处访问

您的rake任务与您的应用无关。 $redis变量仅在运行sinatra服务器时可用,在运行rake任务时不可用。 rake任务在自己的线程中运行。