Apn_for_rails gem实现问题



我已经正确安装和配置了apn_for_rails gem,我遇到的问题可能是由于我对Ruby on Rails不熟悉而导致的语法问题。

我有这个在/models下的文件push_notification.rb

class ApnDevice < ActiveRecord::Base
end
在routes.rb

match '/api/v2.0/RegisterIOSDevice',              :to => Api::V_2_0::ApiNotifications

然后我在/lib/api/v_2_0中有另一个文件名为api_notifications。rb

require 'rubygems'
require 'sinatra/base'
require 'nokogiri'
require 'apn_on_rails'
module Api
  module V_2_0
    class ApiPushNotification < sinatra::Base
      include ApplicationHelper
      include Api::V_2_0::ApiResponse
      include ApiUtil
      def push_notification(params)
        status = -1
        error = nil
        begin
          if params[:device_token].blank?
            return status_respnse(params,status,'device_token cant be blank')
          end
          existing_device_token = ApnDevice.find_by_token(params[:device_token])
          if existing_device_token
            return status_response(params,status,'Token already exists for device')
          end
          token = ApnDevice.create!(:token => params[:device_token])
        rescue Exception => e
          error = e.message
          Rails.logger.info "#{e.class} : #{e.message}"
          Rails.logger.info e.backtrace.join("n")
        rescue => e
          error = e 
          Rails.logger.info "Caught exception: #{e}"
          Rails.logger.info e.backtrace.join("n")
        end #end of rescue
        status_response(params,status,error)
      end
      get '/api/v2.0/RegisterIOSDevice.:format' do
        push_notification(params)
      end
      post '/api/v2.0/RegisterIosDevice.:format' do
        push_notification(params)
      end
    end #end of class ApiPushNotification
  end #end of module V_2_0
end #end of module Api

但是它给了我一个巨大的错误当我运行我的服务器时,我不会发布所有的东西,但它说的基本上是

/lib/api/v_2_0/api_notifications.rb:7: invalid multibyte char (US-ASCII) (SyntaxError)
/lib/api/v_2_0/api_notifications.rb:7: syntax error, unexpected $end, expecting keyword_end

后面是一个堆栈跟踪,我不会张贴,但我似乎找不到问题,有什么想法吗?

编辑:

ok,我添加了utf-8的建议,现在我得到一个新的错误:

lib/api/v_2_0/api_notifications.rb:46: syntax error, unexpected keyword_end, expecting $end (SyntaxError)

我不知道你在那里做什么,但是如果你在lib中使用Sinatra,为什么要使用Rails呢?

在您的错误中,在第一行添加以下代码:

# encoding: utf-8

最新更新