RubyonRailsアプリケーションを構築する方法
序章
Rails は、Rubyで記述されたWebアプリケーションフレームワークです。 共通の目標がある場合、設定された規則が開発者に最も役立つと仮定して、アプリケーション開発には意見の分かれるアプローチを取ります。 したがって、Railsは、ルーティング、ステートフルデータ、アセット管理などを処理するための規則を提供して、ほとんどのWebアプリケーションが必要とするベースライン機能を提供します。
Railsは、 model-view-controller (MCV)アーキテクチャパターンに従います。これにより、モデル内にあるアプリケーションのロジックが、アプリケーション情報のルーティングと表示から分離されます。 この組織構造は、開発者がコードをヘルパーおよび部分に抽出できるようにする他の規則とともに、アプリケーションコードが不必要に繰り返されないようにします。
このチュートリアルでは、ユーザーがサメとその行動に関する情報を投稿できるようにするRailsアプリケーションを作成します。 これは、将来のアプリケーション開発の良い出発点になります。
前提条件
このチュートリアルに従うには、次のものが必要です。
- Ubuntu18.04を実行しているローカルマシンまたは開発サーバー。 開発マシンには、管理者権限を持つroot以外のユーザーと、
ufw
で構成されたファイアウォールが必要です。 これを設定する方法については、 Ubuntu18.04を使用した初期サーバー設定のチュートリアルを参照してください。 - Node.jsおよびnpmがローカルマシンまたは開発サーバーにインストールされています。 このチュートリアルでは、Node.jsバージョン10.16.3とnpmバージョン6.9.0を使用します。 Ubuntu 18.04にNode.jsとnpmをインストールする手順については、 Ubuntu18.04にNode.jsをインストールする方法の「PPAを使用したインストール」セクションの手順に従ってください。
- Ubuntu18.04でrbenvを使用してRubyonRailsをインストールする方法の手順1〜4に従って、ローカルマシンまたは開発サーバーにインストールされたRuby、 rbenv 、およびRails。 このチュートリアルでは、Ruby 2.5.1 、rbenv 1..1.2 、およびRails 5.2.0を使用します。
ステップ1—SQLite3をインストールする
Rails sharkアプリケーションを作成する前に、ユーザーデータを格納するデータベースがあることを確認する必要があります。 RailsはデフォルトでSQLiteを使用するように構成されており、これは多くの場合、開発において適切な選択です。 私たちのアプリケーションデータは高レベルのプログラムによる拡張性を必要としないため、SQLiteは私たちのニーズを満たします。
まず、パッケージインデックスを更新します。
sudo apt update
次に、sqlite3
およびlibsqlite3-dev
パッケージをインストールします。
sudo apt install sqlite3 libsqlite3-dev
これにより、SQLiteとそれに必要な開発ファイルの両方がインストールされます。
バージョンをチェックして、インストールが成功したことを確認します。
sqlite3 --version
Output3.22.0 2018-01-22 18:45:57 0c55d179733b46d8d0ba4d88e01a25e10677046ee3da1d5b1581e86726f2alt1
SQLiteをインストールすると、アプリケーションの開発を開始する準備が整います。
ステップ2—新しいRailsプロジェクトを作成する
データベースをインストールしたら、新しいRailsプロジェクトを作成し、Railsがrailsnewコマンドで提供するデフォルトのボイラープレートコードのいくつかを確認できます。
次のコマンドを使用して、sharkapp
というプロジェクトを作成します。
rails new sharkapp
Railsが新しいプロジェクトのために何を作成しているかを示す大量の出力が表示されます。 以下の出力は、いくつかの重要なファイル、ディレクトリ、およびコマンドを強調しています。
Output create . . . create Gemfile . . . create app . . . create app/controllers/application_controller.rb . . . create app/models/application_record.rb . . . create app/views/layouts/application.html.erb . . . create config create config/routes.rb create config/application.rb . . . create config/environments create config/environments/development.rb create config/environments/production.rb create config/environments/test.rb . . . create config/database.yml create db create db/seeds.rb . . . run bundle install . . . Bundle complete! 18 Gemfile dependencies, 78 gems now installed. Use `bundle info [gemname]` to see where a bundled gem is installed. . . . * bin/rake: Spring inserted * bin/rails: Spring inserted
ここで強調表示されている出力は、Railsが以下を作成したことを示しています。
Gemfile
:このファイルには、アプリケーションのgem依存関係が一覧表示されます。 gem はRubyソフトウェアパッケージであり、Gemfileを使用するとプロジェクトのソフトウェアニーズを管理できます。app
:app
ディレクトリは、メインのアプリケーションコードが存在する場所です。 これには、アプリケーション自体を構成するモデル、コントローラー、ビュー、アセット、ヘルパー、およびメーラーが含まれます。 Railsは、MCVモデルがapp/models/application_record.rb
、app/controllers/application_controller.rb
、app/views/layouts/application.html.erb
などのファイルで開始するためのアプリケーションレベルの定型文を提供します。config
:このディレクトリには、アプリケーションの構成設定が含まれています。 config / routers.rb:アプリケーションのルート宣言はこのファイルにあります。 config / application.rb:アプリケーションコンポーネントの一般設定は、このファイルにあります。config/environments
:このディレクトリは、環境の構成設定が存在する場所です。 Railsには、デフォルトでdevelopment
、production
、およびtest
の3つの環境が含まれています。config/database.yml
:データベース構成設定はこのファイルにあり、default
、development
、production
、test
の4つのセクションに分かれています。 。sqlite3
gemを含むrails new
コマンドに付属のGemfileのおかげで、config/database.yml
ファイルのadapter
パラメーターは[に設定されています。 X152X]すでに、このアプリケーションでSQLiteデータベースを使用することを指定しています。db
:このフォルダには、schema.rb
およびseeds.rb
ファイルとともに、migrate
と呼ばれるデータベースmigrationsのディレクトリが含まれています。schema.db
にはデータベースに関する情報が含まれ、seeds.rb
にはデータベースのシードデータを配置できます。
最後に、Railsは bundle install コマンドを実行して、Gemfile
にリストされている依存関係をインストールします。
すべての設定が完了したら、sharkapp
ディレクトリに移動します。
cd sharkapp
これで、 rails serverコマンドを使用して、Railsサーバーを起動し、アプリケーションが機能していることを確認できます。 ローカルマシンで作業している場合は、次のように入力します。
rails server
Railsはデフォルトでlocalhost
にバインドされるため、ブラウザをlocahost:3000
に移動すると、アプリケーションにアクセスできるようになります。次の画像が表示されます。
開発サーバーで作業している場合は、最初にポート3000
で接続が許可されていることを確認してください。
sudo ufw allow 3000
次に、--binding
フラグを使用してサーバーを起動し、サーバーIPにバインドします。
rails server --binding=your_server_ip
ブラウザでhttp://your_server_ip:3000
に移動すると、Railsのウェルカムメッセージが表示されます。
見回したら、CTRL+C
でサーバーを停止できます。
アプリケーションを作成して配置したら、Railsボイラープレートから構築を開始して独自のアプリケーションを作成する準備が整います。
ステップ3—アプリケーションの足場
サメ情報アプリケーションを作成するには、アプリケーションデータを管理するためのモデル、そのデータとのユーザーインタラクションを可能にするビュー、およびモデルとビューの間の通信を管理するためのコントローラーを作成する必要があります。 これらを構築するには、rails generate scaffold
コマンドを使用します。これにより、モデル、データベーススキーマを変更するデータベース移行、コントローラー、管理するビューのフルセットが提供されます。 アプリケーションの作成、読み取り、更新、削除](CRUD)操作、およびパーシャル、ヘルパー、テストのテンプレート。
generate scaffold
コマンドは非常に多くの作業を行うため、Railsが内部で行っている作業を理解するために、コマンドが作成するリソースを詳しく見ていきます。
generate scaffold
コマンドには、モデルの名前とデータベーステーブルに必要なフィールドが含まれます。 RailsはActiveRecord を使用して、モデルを持つオブジェクトとして構築されたアプリケーションデータとアプリケーションデータベースの間の関係を管理します。 各モデルはRubyクラスであり、ActiveRecord::Base
クラスからも継承されています。 これは、Rubyクラスを操作するのと同じ方法でモデルクラスを操作できると同時に、ActiveRecordからメソッドを取得できることを意味します。 Active Recordは、各クラスがデータベース内のテーブルにマップされ、そのクラスの各インスタンスがそのテーブル内の行にマップされていることを確認します。
次のコマンドを入力して、Shark
モデル、コントローラー、および関連するビューを生成します。
rails generate scaffold Shark name:string facts:text
name:string
とfacts:text
を使用して、データベーステーブルに必要なフィールドとそれらが受け入れる必要のあるデータのタイプに関する情報をRailsに提供します。 text
はサメの事実に対してより多くのキャラクターを許可しますが、どちらも私たちが望むものを入力する余地を与えてくれます。
このコマンドを入力すると、Railsが生成しているすべてのことを説明する出力の長いリストが再び表示されます。 以下の出力は、セットアップにとってより重要なことのいくつかを強調しています。
Output invoke active_record create db/migrate/20190804181822_create_sharks.rb create app/models/shark.rb . . . invoke resource_route route resources :sharks invoke scaffold_controller create app/controllers/sharks_controller.rb invoke erb create app/views/sharks create app/views/sharks/index.html.erb create app/views/sharks/edit.html.erb create app/views/sharks/show.html.erb create app/views/sharks/new.html.erb create app/views/sharks/_form.html.erb . . .
Railsはapp/models/shark.rb
でモデルを作成し、それに合わせてデータベースを移行しました:db/migrate/20190804181822_create_sharks.rb
。 移行ファイルのタイムスタンプは、ここに表示されているものとは異なります。
また、コントローラーapp/controllers/sharks_controller.rb
と、app/views/sharks
で収集されたアプリケーションのCRUD操作に関連するビューも作成しました。 これらのビューの中には、ビュー全体で使用されるコードを含む部分的な_form.html.erb
があります。
最後に、Railsは新しいリソースフルルートresources :sharks
をconfig/routes.rb
に追加しました。 これにより、Railsルーターは着信HTTP要求をsharks
コントローラーおよび関連するビューと照合できます。
Railsは私たちのためにアプリケーションコードを構築する作業の多くを行ってきましたが、何が起こっているのかを理解するためにいくつかのファイルを見る価値があります。
まず、次のコマンドでコントローラーファイルを見てみましょう。
cat app/controllers/sharks_controller.rb
Outputclass SharksController < ApplicationController before_action :set_shark, only: [:show, :edit, :update, :destroy] # GET /sharks # GET /sharks.json def index @sharks = Shark.all end # GET /sharks/1 # GET /sharks/1.json def show end # GET /sharks/new def new @shark = Shark.new end # GET /sharks/1/edit def edit end # POST /sharks # POST /sharks.json def create @shark = Shark.new(shark_params) respond_to do |format| if @shark.save format.html { redirect_to @shark, notice: 'Shark was successfully created.' } format.json { render :show, status: :created, location: @shark } else format.html { render :new } format.json { render json: @shark.errors, status: :unprocessable_entity } end end end # PATCH/PUT /sharks/1 # PATCH/PUT /sharks/1.json def update respond_to do |format| if @shark.update(shark_params) format.html { redirect_to @shark, notice: 'Shark was successfully updated.' } format.json { render :show, status: :ok, location: @shark } else format.html { render :edit } format.json { render json: @shark.errors, status: :unprocessable_entity } end end end # DELETE /sharks/1 # DELETE /sharks/1.json def destroy @shark.destroy respond_to do |format| format.html { redirect_to sharks_url, notice: 'Shark was successfully destroyed.' } format.json { head :no_content } end end private # Use callbacks to share common setup or constraints between actions. def set_shark @shark = Shark.find(params[:id]) end # Never trust parameters from the scary internet, only allow the white list through. def shark_params params.require(:shark).permit(:name, :facts) end end
コントローラは、情報が取得されて関連付けられたモデルに渡される方法、および情報が特定のビューに関連付けられる方法を管理する責任があります。 ご覧のとおり、sharks
コントローラーには、標準のCRUD操作に大まかに対応する一連のメソッドが含まれています。 ただし、エラーが発生した場合に効率を上げるために、CRUD関数よりも多くの方法があります。
たとえば、create
メソッドについて考えてみます。
〜/ sharkapp / app / controllers / sharks_controller.rb
. . . def create @shark = Shark.new(shark_params) respond_to do |format| if @shark.save format.html { redirect_to @shark, notice: 'Shark was successfully created.' } format.json { render :show, status: :created, location: @shark } else format.html { render :new } format.json { render json: @shark.errors, status: :unprocessable_entity } end end end . . .
Shark
クラスの新しいインスタンスが正常に保存されると、redirect_to
は新しいリクエストを生成し、それがコントローラーに送信されます。 これはGET
リクエストであり、show
メソッドによって処理され、追加したばかりのサメがユーザーに表示されます。
障害が発生した場合、Railsはルーターに別のリクエストを行うのではなく、app/views/sharks/new.html.erb
テンプレートを再度レンダリングし、ユーザーにデータを送信する別の機会を提供します。
sharksコントローラーに加えて、Railsはindex
ビューのテンプレートを提供しました。これは、コントローラーのindex
メソッドにマップされます。 これをアプリケーションのルートビューとして使用するので、一見の価値があります。
次のように入力してファイルを出力します。
cat app/views/sharks/index.html.erb
Output<p id="notice"><%= notice %></p> <h1>Sharks</h1> <table> <thead> <tr> <th>Name</th> <th>Facts</th> <th colspan="3"></th> </tr> </thead> <tbody> <% @sharks.each do |shark| %> <tr> <td><%= shark.name %></td> <td><%= shark.facts %></td> <td><%= link_to 'Show', shark %></td> <td><%= link_to 'Edit', edit_shark_path(shark) %></td> <td><%= link_to 'Destroy', shark, method: :delete, data: { confirm: 'Are you sure?' } %></td> </tr> <% end %> </tbody> </table> <br> <%= link_to 'New Shark', new_shark_path %>
index
ビューは、データベースのsharks
テーブルにマップされているShark
クラスのインスタンスを反復処理します。 ERBテンプレートを使用して、ビューは、個々のサメインスタンスに関連付けられているテーブルから各フィールドname
およびfacts
を出力します。
次に、ビューは link_to ヘルパーを使用して、提供された文字列をリンクのテキストとして、提供されたパスを宛先として、ハイパーリンクを作成します。 パス自体は、rails generate scaffold
コマンドでsharks
リソースフルルートを定義したときに使用可能になったヘルパーを介して可能になります。
index
ビューに加えて、new
ビューを見て、Railsがビューでパーシャルをどのように使用しているかを確認することもできます。 次のように入力して、app/views/sharks/new.html.erb
テンプレートを出力します。
cat app/views/sharks/new.html.erb
Output<h1>New Shark</h1> <%= render 'form', shark: @shark %> <%= link_to 'Back', sharks_path %>
このテンプレートには新しいサメのエントリの入力フィールドがないように見えるかもしれませんが、render 'form'
への参照は、テンプレートが_form.html.erb
パーシャルをプルしていることを示しています。これにより、ビュー間で繰り返されるコードが抽出されます。 。
そのファイルを見ると、新しいsharkインスタンスがどのように作成されるかを完全に理解できます。
cat app/views/sharks/_form.html.erb
Output<%= form_with(model: shark, local: true) do |form| %> <% if shark.errors.any? %> <div id="error_explanation"> <h2><%= pluralize(shark.errors.count, "error") %> prohibited this shark from being saved:</h2> <ul> <% shark.errors.full_messages.each do |message| %> <li><%= message %></li> <% end %> </ul> </div> <% end %> <div class="field"> <%= form.label :name %> <%= form.text_field :name %> </div> <div class="field"> <%= form.label :facts %> <%= form.text_area :facts %> </div> <div class="actions"> <%= form.submit %> </div> <% end %>
このテンプレートは、 form_withフォームヘルパーを利用します。 フォームヘルパーは、特定のモデルのフィールドとスコープを使用して、ユーザー入力から新しいオブジェクトを簡単に作成できるように設計されています。 ここで、form_with
はmodel: shark
を引数として取り、それが作成する新しいフォームビルダーオブジェクトには、sharks
テーブルのフィールドに対応するフィールド入力があります。 したがって、ユーザーは、サメname
とサメfacts
の両方を入力するためのフォームフィールドを持っています。
このフォームを送信すると、ユーザーデータを含むJSON応答が作成され、アプリケーションの残りの部分が paramsメソッドを介してアクセスできます。このメソッドは、そのデータを使用してActionController::Parameters
オブジェクトを作成します。
rails generate scaffold
が何を生成したかがわかったので、アプリケーションのルートビューの設定に進むことができます。
ステップ4—アプリケーションルートビューの作成と機能のテスト
理想的には、アプリケーションのランディングページをアプリケーションのルートにマップして、ユーザーがアプリケーションの目的をすぐに理解できるようにする必要があります。
これを処理する方法はいくつかあります。たとえば、Welcome
コントローラーと関連するindex
ビューを作成して、ユーザーに次のリンク先にもリンクできる一般的なランディングページを提供することができます。アプリケーションのさまざまな部分。 ただし、私たちの場合、ユーザーにindex
sharksビューを表示させるだけで、今のところアプリケーションの目的を十分に紹介できます。
これを設定するには、config/routes.rb
のルーティング設定を変更して、アプリケーションのルートを指定する必要があります。
config/routes.rb
を開いて、nano
またはお気に入りのエディターを使用して、編集します。
nano config/routes.rb
ファイルは次のようになります。
〜/sharkapp/config/routes.rb
Rails.application.routes.draw do resources :sharks # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html end
より具体的な設定をしなくても、http://localhost:3000
またはhttp://your_server_ip:3000
のデフォルトのビューがデフォルトのRailsウェルカムページになります。
アプリケーションのルートビューをsharksコントローラーのindex
ビューにマップするには、ファイルに次の行を追加する必要があります。
〜/sharkapp/config/routes.rb
Rails.application.routes.draw do resources :sharks root 'sharks#index' # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html end
これで、ユーザーがアプリケーションルートに移動すると、サメの完全なリストが表示され、新しいサメエントリを作成し、既存のエントリを確認し、特定のエントリを編集または削除する機会があります。
ファイルを保存し、編集が終了したらエディターを終了します。 nano
を使用してファイルを編集した場合は、CTRL+X
、Y
、ENTER
の順に押すと編集できます。
これで、次のコマンドを使用して移行を実行できます。
rails db:migrate
移行を確認する出力が表示されます。
Railsサーバーをもう一度起動します。 ローカルで作業している場合は、次のように入力します。
rails s
開発サーバーで、次のように入力します。
rails s --binding=your_server_ip
ローカルで作業している場合はlocalhost:3000
に移動し、開発サーバーで作業している場合はhttp://your_server_ip:3000
に移動します。
アプリケーションのランディングページは次のようになります。
新しいサメを作成するには、ページの下部にある New Shark リンクをクリックすると、sharks/new
ルートに移動します。
アプリケーションをテストするために、いくつかのデモ情報を追加しましょう。 Name フィールドに「GreatWhite」を入力し、Factsフィールドに「Scary」を入力します。
作成ボタンをクリックしてサメを作成します。
これにより、show
ルートに移動します。このルートは、before_action
フィルターのおかげで、id
メソッドで設定されます。作成したばかりのサメ:
〜/ sharkapp / app / controllers / sharks_controller.rb
class SharksController < ApplicationController before_action :set_shark, only: [:show, :edit, :update, :destroy] . . . def show end . . . private # Use callbacks to share common setup or constraints between actions. def set_shark @shark = Shark.find(params[:id]) end . . .
サメのエントリで編集をクリックすると、編集機能をテストできます。 これにより、そのサメのedit
ルートに移動します。
ホオジロザメのfacts
を「怖い」ではなく「大」に変更し、サメの更新をクリックします。 これにより、show
ルートに戻ります。
最後に、戻るをクリックすると、更新されたindex
ビューに移動します。
アプリケーションの基本機能をテストしたので、いくつかの検証とセキュリティチェックを追加して、すべてをより安全にすることができます。
ステップ5—検証を追加する
sharkアプリケーションはユーザーからの入力を受け入れることができますが、ユーザーが事実を追加せずにsharkを作成しようとしたり、データベースに既に存在するsharkのエントリを作成したりする場合を想像してみてください。 モデルに検証を追加することにより、データベースに入力される前にデータをチェックするメカニズムを作成できます。 アプリケーションのロジックはモデル内にあるため、ここでのデータ入力の検証は、アプリケーションの他の場所で検証するよりも理にかなっています。
このチュートリアルでは検証テストの作成については説明しませんが、テストの詳細については、Railsのドキュメントを参照してください。
サーバーをまだ停止していない場合は、CTRL+C
と入力して停止します。
shark.rb
モデルファイルを開きます。
nano app/models/shark.rb
現在、このファイルは、Shark
クラスがApplicationRecord
から継承し、 ActiveRecord ::Baseから継承することを示しています。
〜/ sharkapp / app / models / shark.rb
class Shark < ApplicationRecord end
まず、name
フィールドにいくつかの検証を追加して、フィールドが入力されていること、およびエントリが一意であることを確認し、エントリの重複を防ぎます。
〜/ sharkapp / app / models / shark.rb
class Shark < ApplicationRecord validates :name, presence: true, uniqueness: true end
次に、facts
フィールドの検証を追加して、フィールドも入力されていることを確認します。
〜/ sharkapp / app / models / shark.rb
class Shark < ApplicationRecord validates :name, presence: true, uniqueness: true validates :facts, presence: true end
ここでは、固有のサメのエントリに関連付けられている限り、事実の一意性についてはあまり気にしません。
終了したら、ファイルを保存して閉じます。
ローカルで作業しているか開発サーバーで作業しているかに応じて、rails s
またはrails s --binding=your_server_ip
のいずれかを使用してサーバーを再起動します。
http://localhost:3000
またはhttp://your_server_ip:3000
でアプリケーションのルートに移動します。
NewSharkをクリックします。 フォームで、 Name フィールドに「GreatWhite」を追加し、 Facts フィールドに「BigTeeth」を追加して、 CreateSharkをクリックします。 次の警告が表示されます。
それでは、他の検証を確認できるかどうかを見てみましょう。 戻るをクリックしてホームページに戻り、もう一度新しいサメをクリックします。 新しいフォームで、 Name フィールドに「TigerShark」と入力し、Factsを空白のままにします。 シャークの作成をクリックすると、次の警告がトリガーされます。
これらの変更により、データベースに保存されるデータの一貫性を確保するために、アプリケーションでいくつかの検証が行われます。 これで、アプリケーションのユーザーに注意を向け、アプリケーションデータを変更できるユーザーを定義できます。
ステップ6—認証の追加
検証が行われると、データベースに保存されているデータについていくつかの保証があります。 しかし、ユーザーはどうですか? すべてのユーザーをデータベースに追加したくない場合は、許可されたユーザーのみがサメを追加できるように、いくつかの認証手段を追加する必要があります。 これを行うには、 http_basic_authenticate_withメソッドを使用します。これにより、ユーザーを認証するためのユーザー名とパスワードの組み合わせを作成できます。
bcryptまたはdeviseジェムを使用するなど、Railsでユーザーを認証する方法はいくつかあります。 ただし、今のところ、アプリケーション全体のアクションに適用するメソッドをアプリケーションコントローラーに追加します。 これは、将来、アプリケーションにコントローラーを追加する場合に役立ちます。
CTRL+C
でサーバーを再度停止します。
ApplicationController
を定義するファイルを開きます。
nano app/controllers/application_controller.rb
内部には、アプリケーション内の他のコントローラーが継承するApplicationController
クラスの定義が表示されます。
〜/ sharkapp / app / controllers / application_controller.rb
class ApplicationController < ActionController::Base end
ユーザーを認証するために、http_basic_authenticate_with
メソッドでハードコードされたユーザー名とパスワードを使用します。 次のコードをファイルに追加します。
〜/ sharkapp / app / controllers / application_controller.rb
class ApplicationController < ActionController::Base http_basic_authenticate_with name: 'sammy', password: 'shark', except: [:index, :show] end
ここでユーザー名とパスワードを指定することに加えて、不要のルートを指定することで認証を制限しました:index
とshow
。 これを実現する別の方法は、only: [:create, :update, :destroy]
と書くことでした。 このようにして、すべてのユーザーがすべてのサメを見て、特定のサメに関する事実を読むことができます。 ただし、サイトコンテンツの変更に関しては、ユーザーはアクセス権があることを証明する必要があります。
より堅牢なセットアップでは、この方法で値をハードコーディングすることは望ましくありませんが、デモンストレーションの目的で、これにより、アプリケーションのルートの認証を含める方法を確認できます。 また、RailsがデフォルトでセッションデータをCookieに保存する方法を確認できます。指定したアクションで認証すると、同じセッションで再度認証する必要はありません。
編集が終了したら、app/controllers/application_controller.rb
を保存して閉じます。 これで、実際の認証をテストできます。
rails s
またはrails s --binding=your_server_ip
のいずれかでサーバーを起動し、http://localhost:3000
またはhttp://your_server_ip:3000
のいずれかでアプリケーションに移動します。
ランディングページで、 NewSharkボタンをクリックします。 これにより、次の認証ウィンドウがトリガーされます。
app/controllers/application_controller.rb
に追加したユーザー名とパスワードの組み合わせを入力すると、新しいサメを安全に作成できます。
これで、データ検証と基本認証スキームを備えた、動作するsharkアプリケーションができました。
結論
このチュートリアルで作成したRailsアプリケーションは、さらなる開発に使用できる出発点です。 Railsエコシステムの探索に興味がある場合は、プロジェクトドキュメントから始めるのが最適です。
Ruby on Railsアプリケーションのネストされたリソースを作成する方法を読んで、プロジェクトにネストされたリソースを追加する方法についても学ぶことができます。これは、アプリケーションのモデルとルートを構築する方法を示しています。
さらに、 React などのフレームワークを使用して、プロジェクトのより堅牢なフロントエンドをセットアップする方法を検討することもできます。 Reactフロントエンドを使用してRubyonRailsプロジェクトをセットアップする方法は、これを行う方法についてのガイダンスを提供します。
さまざまなデータベースオプションを調べたい場合は、 Ubuntu18.04のRubyonRailsアプリケーションでPostgreSQLを使用する方法を確認することもできます。この方法では、代わりにPostgreSQLを使用する方法について説明しています。 SQLiteの。 このデータベースの操作について詳しくは、PostgreSQLチュートリアルのライブラリを参照することもできます。