我正确安装并配置了apn_for_rails gem,由于我对Ruby on Rails的新见,我遇到的问题可能是一个语法问题。
我在/ model下的文件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 :(得分:0)
我不知道你在那里做什么,但如果你在lib中使用Sinatra,为什么还要使用Rails?
要发生错误,请在第一行添加以下代码:
# encoding: utf-8