NameError:未初始化的常量Rpush :: Gcm我试图将rpush用于我的移动应用程序。但我一直收到这个错误

时间:2014-12-17 11:20:34

标签: android notifications gem sinatra push

所以我试图使用rpush来使用这个gem来发送我的移动应用的推送通知:https://github.com/rpush/rpush。我正在使用sinatra框架。但即使我写了 - >我仍然会收到此错误。要求' rpush'在我的文件的顶部。有人在红宝石中有经验可以帮助我吗?我是红宝石的新手所以请耐心等待。这是我的代码

require 'rpush'

Module Notifier

def rpush_client
app = Rpush::Gcm::App.new
app.name = "App-Name"
app.auth_key = "XXXXXXXXXXXXXXX"
app.connections = 1
app.save!
end


def notify(user_id,alert)
  rpush_client
  session = db_find_one('dbname.sessions',{user_id: user_id})
  if session.present?
    device = session['devices'].first
    token = device['device_token']
    n = Rpush::Gcm::Notification.new
    n.app = Rpush::Gcm::App.find_by_name("App-Name")
    n.registration_ids = ["token", token]
    n.data = { message: alert }
    n.save!

    Rpush.push
  end
end

end

我知道这是一个愚蠢的问题,但厌倦了在这里寻找它。

2 个答案:

答案 0 :(得分:0)

您是否正在使用Sinatra的捆绑器?如果是这样,您不需要明确要求Rpush。见这里:http://bundler.io/sinatra.html

答案 1 :(得分:0)

我做错了什么

在我的情况下,我刚刚在rpush上安装了

bundle add rpush

并遇到相同的错误。

我应该做的

正如README.md中明确提到的那样,在将rpush添加到Gemfile之后,您必须运行以下命令:

$ bundle
$ bundle exec rpush init

正确安装后会得到什么

这将生成config/initializers/rpush.rb和(很多)迁移文件。

此后,您可能要运行迁移。

提示

我建议使用rpush-redis

您不需要使用它进行额外的迁移。您可以放心地删除垃圾迁移文件。

config.redis_options可能类似于以下内容:

Rpush.configure do |config|

  # Supported clients are :active_record and :redis
  config.client = :redis

  # Options passed to Redis.new
  config.redis_options = {
    url: ENV.fetch('REDIS_URL', 'redis://localhost:6379/0'),
    password: ENV.fetch('REDIS_PASSWORD', '')
  }
end