ruby-on-rails – 在Heroku / AWS Elastic Beanstalk上部署Rails
我正在尝试将移动客户端与REST API配对,以便获取可以在应用程序中显示的
JSON数据.亚伯拉罕库里巴尔加斯正在跟随Apis on Rails.在API中我创建了一个子域以及一些版本控制,因此控制器文件位于app / controllers / api / v1中.当我在本地运行它时,API返回所需的JSON数据.我面临的问题是每当我将API部署到Heroku / AWS上时,它都会显示“找不到应用程序”.是远程服务器没有进入app / controllers / api / v1吗?对于这样的问题是否有任何修复,因为即使在书中,作者也写过“由于应用程序的结构,我们不会将应用程序部署到任何服务器”.我很长时间都坚持这个问题,并且会喜欢任何建议!
应用程序/控制器/ API / V1 / users_controller.rb class Api::V1::UsersController < ApplicationController respond_to :json def show respond_with User.find(params[:id]) end def create user = User.new(user_params) if user.save render json: user,status: 201,location: [ :api,user ] else render json: { errors: user.errors },status: 422 end end def update user = User.find(params[:id]) if user.update(user_params) render json: user,status: 200,status: 422 end end def destroy user = User.find(params[:id]) user.destroy head 204 end private def user_params params.require(:user).permit(:email,:password,:password_confirmation) end end 配置/ routes.rb中 require 'api_constraints' Rails.application.routes.draw do devise_for :users namespace :api,defaults: { format: :json },constraints: { subdomain: 'api' },path: '/' do scope module: :v1,constraints: ApiConstraints.new(version: 1,default: true) do #resources resources :users,:only => [:show,:create,:update,:destroy] end end end 输出,当我在本地运行localhosts:// 3000 / users / 1时 { “ID”:1,“电子邮件”: “example@marketplace.com”,“created_at”: “2016-06-09T05:36:06.606Z”,“的updated_at”:“2016-06-09T05:36:06.606 Z“} 当我运行petoye.herokuapp.com/users/1时,Heroku服务器会记录 在2016-06-12 06:43:36 0000开始获取120.60.22.244的GET“/ users / 1” 解决方法
有关如何为Rails API配置Heroku的步骤
>首先,您需要使用任何注册商购买域名,比如说您购买www.example.com,这样您就可以使用像api.example.com这样的子域名.完成后,您需要告诉heroku在api.example.com上收听请求.这可以通过在cmd上键入来轻松完成 heroku domains:add api.example.com >使用domains:add命令后,您必须将DNS提供程序指向Heroku提供的域的DNS目标.这是通过创建类似example.herokuapp.com的CNAME条目(输入heroku信息以获取应用程序的名称)来完成的.如果您使用DNSimple(https://www.youtube.com/watch?v=rr6Jy9i0Cws)之类的服务,上述过程将变得简单.基本上,您添加了api.example.com的CNAME记录,该记录指向example.herokuapp.com 完成所有这些后,您就可以使用api.example.com/any_endpoints访问api 其他资源: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |