1

我已经安装并正确配置了apn_for_rails gem,我遇到的问题可能是由于我对Ruby on Rails的新鲜感而导致的语法问题。apn_for_rails gem实现问题

我有这个在/文件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 

这之后是一个堆栈跟踪,我将不会发布,但我似乎无法找出问题所在,任何想法?

编辑:

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

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

回答

0

我不知道你在做什么有,但你为什么使用Rails,如果你在lib中使用Sinatra?

要你的错误,在第一行添加以下代码:

# encoding: utf-8 
+0

好问题,我只是更新现有的Rails应用程序,所以我不知道这个问题的答案。我的代码放在哪个文件中?谢谢您的帮助! – Lance

+0

你应该把它放在有错误的文件的顶部,例如你刚才发出的错误。 api_notifications.rb –

+0

好酷,那摆脱了第一个错误,那么第二个呢?它看起来像我有太多的目标,或者不够。我试图寻找大约一个小时,但它逃脱我 – Lance