ruby - Redis 在 sinatra rake 任务中不工作

标签 ruby redis gem sinatra rake

我想在我的 Sinatra 应用程序中使用 Redis。虽然我可以在本地和远程 (heroku) 的控制台中访问 Redis 实例,但当我想在 rake 任务中使用它时,会触发一个错误,我似乎不明白为什么会这样。

应用.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

配置.ru:

require 'rubygems'
require 'sinatra'
require './app'
run MyApp

gem 文件

gem 'redis'

Rake文件.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 任务在自己的线程中运行。

关于ruby - Redis 在 sinatra rake 任务中不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31865125/

相关文章:

ruby - 如何为 Ruby 的 RestClient 设置用户代理?

Ruby:Proc#call 与 yield

ruby-on-rails - 如何设置不记名 token 参数以使用 Rswag UI 测试 Rails API

javascript - 服务器发送的事件不是(刷新?)正确地与 Flask 和 Redis 与 nginx 前端

ruby-on-rails - NameError:sidekiq worker 在生产中未初始化的常量,但在开发中有效

ruby-on-rails - ruby 和 brew 配方有什么区别?

ruby-on-rails-3 - 如何在我的 gemfile 中获取公共(public) git repo 的最新提交?

arrays - Ruby:删除哈希数组中的空括号

clojure - 不知道如何从 : clojure. lang.Symbol 创建 ISeq

ruby-on-rails - gem 安装 kgio 错误