【Railsサンプルアプリ】既存RailsプロジェクトをWebAPIに修正する (未解決)

【Railsサンプルアプリ】既存RailsプロジェクトをWebAPIに修正する (未解決)

RailsでWebAPIを作りたい。

RailsにはAPIモードがあり、rails new するときに–apiオプションを使用することで利用できる。
ただし、前回記事の通り既にプロジェクト作成済みであるため、これを修正してAPIモードにできないか調べた。
結果として、うまく修正できなかったため、次回記事の通り、–apiモードで作成し直した。

既存のRailsプロジェクトをWebAPI化

ここによると3箇所修正するとWebAPI化ができるはず。

https://railsguides.jp/api_app.html

  1. config/application.rb に追加
    config.api_only = true
  2. config/environments/development.rb に追加
    config.debug_exception_response_format = :api
  3. app/controllers/application_controller.rb の変更
    class ApplicationController < ActionController::API
    end

ところがこれでbin/rails sしたところ、http://localhost:3000/usersでエラーが発生した。

  Rendered users/index.html.erb (1146.1ms)
Completed 500 Internal Server Error in 1190ms (ActiveRecord: 5.8ms)
  
ActionView::Template::Error (undefined local variable or method `notice' for #<#<Class:0x00007fe155270748>:0x00007fe154e6f248>):
    1: <p id="notice"><%= notice %></p>
    2: 
    3: <h1>Users</h1>
    4:   
app/views/users/index.html.erb:1:in `_app_views_users_index_html_erb___1593382616114344727_70302886496880'

今の私では、これをどう直せばいいかわからないため、
このアプリは捨てて –webapiオプションで作り直すことにする。

テーブル削除

この後、–apiオプションを付加した別途作成したプロジェクトからアクセスした際、db:migrateしていない旨のエラーが出ました。しかし、既にusersテーブルはあるため、db:migrateできない。
適切な対応としては、こちらのアプリのマイグレーションファイルでdrop tableすべきだと思い、テーブル削除するマイグレーションを実行する。

$ rails g migration users
      invoke  active_record
      create    db/migrate/20181220xxxxxx_users.rb
db/migrate/20181220xxxxxx_users.rb
class Users < ActiveRecord::Migration[5.2]
  def change
    drop_table :users
  end
end

migrationの実行

$ rails db:migrate 
== 20181220xxxxxx Users: migrating ============================================
-- drop_table(:users)
   -> 0.0249s
== 20181220xxxxxx Users: migrated (0.0251s) ===================================

usersテーブルが削除されたことを確認する。

$ psql -U rails_user rails_dev
psql (11.1)
Type "help" for help.

rails_dev=# \dt
                 List of relations
 Schema |         Name         | Type  |   Owner    
--------+----------------------+-------+------------
 public | ar_internal_metadata | table | rails_user
 public | schema_migrations    | table | rails_user
(2 rows)

 

【Railsサンプルアプリ】既存RailsプロジェクトをWebAPIに修正する (未解決)」への1件のフィードバック

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください