Ruby on Railsは、ウェブアプリケーションを迅速に開発するための強力なフレームワークです。特に、API専用のアプリケーションを構築する際には、そのシンプルさと柔軟性が大いに役立ちます。本記事では、API専用のRailsアプリケーションを設定する方法について、ステップバイステップで説明します。
まず最初に、Ruby on Railsをインストールする必要があります。以下の手順に従って、Railsをインストールしましょう。
# Rubyがインストールされていることを確認 ruby -v # gemを使ってRailsをインストール gem install rails
インストールが完了したら、Railsのバージョンを確認してみましょう。
rails -v
次に、新しいRailsアプリケーションを作成します。API専用のアプリケーションを作成するためには、`--api`オプションを使用します。
rails new my_api_app --api
これにより、API専用の設定が施された新しいRailsアプリケーションが作成されます。
新しく作成されたアプリケーションのディレクトリ構造を見てみましょう。以下は、主要なディレクトリとその役割です。
次に、データベースの設定を行います。デフォルトでは、RailsはSQLiteを使用しますが、PostgreSQLやMySQLなど、他のデータベースを使用することもできます。ここでは、SQLiteを使用する設定を行います。
まず、`config/database.yml`ファイルを開き、必要に応じて設定を変更します。デフォルトの設定で問題ない場合は、そのまま使用できます。
# config/database.yml default: &default adapter: sqlite3 pool: 5 timeout: 5000 development: <<: *default database: db/development.sqlite3 test: <<: *default database: db/test.sqlite3 production: <<: *default database: db/production.sqlite3
設定が完了したら、データベースを作成します。
rails db:create
次に、APIで使用するモデルを作成します。ここでは、シンプルな「Post」モデルを作成します。
rails generate model Post title:string body:text
モデルが作成されたら、マイグレーションを実行してデータベースに反映させます。
rails db:migrate
次に、APIエンドポイントを提供するためのコントローラーを作成します。以下のコマンドを実行して、PostsControllerを作成します。
rails generate controller Posts
作成されたコントローラーに、基本的なCRUDアクションを追加します。`app/controllers/posts_controller.rb`を開き、以下のように編集します。
class PostsController < ApplicationController def index @posts = Post.all render json: @posts end def show @post = Post.find(params[:id]) render json: @post end def create @post = Post.new(post_params) if @post.save render json: @post, status: :created else render json: @post.errors, status: :unprocessable_entity end end def update @post = Post.find(params[:id]) if @post.update(post_params) render json: @post else render json: @post.errors, status: :unprocessable_entity end end def destroy @post = Post.find(params[:id]) @post.destroy head :no_content end private def post_params params.require(:post).permit(:title, :body) end end
次に、APIエンドポイントにアクセスするためのルーティングを設定します。`config/routes.rb`を開き、以下のように編集します。
Rails.application.routes.draw do resources :posts end
これにより、PostsControllerの各アクションに対応するルートが自動的に生成されます。
APIを外部からアクセス可能にするために、CORS(Cross-Origin Resource Sharing)を設定する必要があります。`Gemfile`に以下のgemを追加します。
gem 'rack-cors', require: 'rack/cors'
次に、`bundle install`を実行してgemをインストールします。
bundle install
その後、`config/application.rb`にCORSの設定を追加します。
module MyApiApp class Application < Rails::Application # その他の設定... config.middleware.insert_before 0, Rack::Cors do allow do origins '*' resource '*', headers: :any, methods: [:get, :post, :put, :patch, :delete, :options, :head] end end end end
すべての設定が完了したら、Railsサーバーを起動します。
rails server
サーバーが起動したら、`http://localhost:3000/posts`にアクセスして、APIが正しく動作しているか確認します。
最後に、APIの動作を確認するために、テストを実行します。Railsには、テストフレームワークが組み込まれているため、簡単にテストを作成できます。
テストを作成するには、`test/controllers/posts_controller_test.rb`を開き、以下のように編集します。
require "test_helper" class PostsControllerTest < ActionDispatch::IntegrationTest test "should get index" do get posts_url assert_response :success end test "should create post" do assert_difference('Post.count') do post posts_url, params: { post: { title: 'Test Title', body: 'Test Body' } } end assert_response :created end end
テストを実行するには、以下のコマンドを使用します。
rails test
この記事では、API専用のRailsアプリケーションを設定する方法について説明しました。Railsの強力な機能を活用することで、迅速にAPIを構築することができます。ぜひ、この記事を参考にして、自分だけのAPIを作成してみてください!
© 2024 RailsInsights. All rights reserved.