Redis 在 sinatra rake 任务中不工作
Redis not working in sinatra rake tasks
我想在我的 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
宝石文件
gem 'redis'
Rakefile.rb
desc 'Try Redis'
task :try_redis do
puts $redis.set("try", 0)
end
rake aborted! NoMethodError: undefined method `set' for nil:NilClass
我不太习惯 Sinatra,对我来说没有什么特别不对的地方。我不明白为什么我的全局变量 $redis 在我的应用程序中无法从任何地方访问...
如能赐教,先谢谢了!
I do not understand why my global variable $redis would not be
accessible from everywhere in my app
您的 rake
任务与您的应用无关。 $redis
变量仅在您 运行 sinatra
服务器时可用,而在您 运行 rake 任务时不可用。自己的线程中的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
宝石文件
gem 'redis'
Rakefile.rb
desc 'Try Redis'
task :try_redis do
puts $redis.set("try", 0)
end
rake aborted! NoMethodError: undefined method `set' for nil:NilClass
我不太习惯 Sinatra,对我来说没有什么特别不对的地方。我不明白为什么我的全局变量 $redis 在我的应用程序中无法从任何地方访问...
如能赐教,先谢谢了!
I do not understand why my global variable $redis would not be accessible from everywhere in my app
您的 rake
任务与您的应用无关。 $redis
变量仅在您 运行 sinatra
服务器时可用,而在您 运行 rake 任务时不可用。自己的线程中的rake
任务运行。