rails + heroku:将routes.rb文件中的root指向app.rb文件

时间:2016-12-29 16:38:53

标签: ruby heroku sinatra heroku-toolbelt

我有一个名为app.rb的文件,当我在本地计算机上运行它时运行服务器。我想将app.rb部署到Heroku,以便服务器可以在Heroku上运行。我想我需要在routes.rb指向它。我该怎么做呢?

这是config.ru:

require_relative 'config/environment'
require '/.app.rb'  
run Rails.application
run Sinatra::Application

这是app.rb中的网络服务器代码,来自代码路径指南(https://guides.codepath.com/android/Google-Cloud-Messaging#step-3-setup-web-server):

require 'sinatra'
require 'rest-client'
require 'sequel'

# Create a SQLite3 database

DB = Sequel.connect('sqlite://gcm-test.db')

# Create a Device table if it doesn't exist
DB.create_table? :Device do
  primary_key :reg_id
  String :user_id
  String :reg_token
  String :os, :default => 'android'
end

Device = DB[:Device]  # create the dataset

# Registration endpoint mapping reg_token to user_id
# POST /register?reg_token=abc&user_id=123
post '/register' do
  if Device.filter(:reg_token => params[:reg_token]).count == 0
    device = Device.insert(:reg_token => params[:reg_token], :user_id => params[:user_id], :os => 'android')
  end
end

# Ennpoint for sending a message to a user
# POST /send?user_id=123&title=hello&body=message
post '/send' do
  # Find devices with the corresponding reg_tokens
  reg_tokens = Device.filter(:user_id => params[:user_id]).map(:reg_token).to_a
  if reg_tokens.count != 0
    send_gcm_message(params[:title], params[:body], reg_tokens)
  end
end

# Sending logic
# send_gcm_message(["abc", "cdf"])
def send_gcm_message(title, body, reg_tokens)
  # Construct JSON payload
  post_args = {
    # :to field can also be used if there is only 1 reg token to send
    :registration_ids => reg_tokens,
    :data => {
      :title  => title,
      :body => body,
      :anything => "foobar"
    }
  }

  # Send the request with JSON args and headers
  RestClient.post 'https://gcm-http.googleapis.com/gcm/send', post_args.to_json,
    :Authorization => 'key=' + AUTHORIZE_KEY, :content_type => :json, :accept => :json
end

这是procfile:

web: bundle exec puma -C config/puma.rb

当我按照Heroku示例开始使用Ruby时,我可以看到示例网页。但是,如果我使用'运行Sinatra :: Application'编辑config.ru文件并部署到heroku,它将无法再显示示例网页,只是说" Not Found&# 34;

1 个答案:

答案 0 :(得分:0)

require '/.app.rb'

这应该是./app.rb