前提
rbenvインストール済
railsインストール済
バージョン確認
rubyとrailsを使うので、バージョンを確認します。
ruby -v
(省略)/.rbenv/shims/ruby
と表示されれば、rbenvのrubyを示しています。
rails -v
今回は、以下のバージョンで進めていきます。
- ruby 2.7.4
- rails 5.2.8
警告
rbenvでRubyのバージョンを切り替えた場合、railsコマンドを使うためには、そのRubyバージョンにRailsをインストールする必要があります
Railsアプリケーションの作成からサーバ起動
Railsのバージョンを指定してアプリケーションを作成します。
rails _5.2.8_ new test_app
作成したらそのアプリケーションにcdコマンドで移動します。
そしてサーバを立ち上げましょう。
bundle exec rails s
ちなみに、bundle execをつけるのは、Gemfile.lockに記載されている正確な依存関係のバージョンを使用してアプリケーションを実行させるためです。
サーバを立ち上げたら、アクセスしましょう。
http://localhost:3000
Railsのデフォルト画面が出ればOKです。
CRUD機能の実装
CRUD機能に関しては、自動で土台を作ってくれるscaffoldを使います。
余談ですが、scaffoldの意味は建築現場での足場という意味だそうです。
今回はpostの名称で足場を作っていきます。
rails generate scaffold post
やっぱり必要ないといった場合は、簡単に消すこともできます。
rails destroy scaffold post
なにが生成されるの?
生成される主なファイルの一覧です。
-
モデル:
app/models/post.rb
Postモデルの定義が含まれます。 -
コントローラ:
app/controllers/posts_controller.rb
Postsコントローラのアクションとロジックが含まれます。 -
ビュー:
app/views/posts/index.html.erb
app/views/posts/edit.html.erb
app/views/posts/show.html.erb
app/views/posts/new.html.erb
app/views/posts/_form.html.erb
これらのファイルは、それぞれ一覧表示、編集、詳細表示、新規作成のビューと、フォーム部分をパーシャルとして共通化したビューを提供します。 -
マイグレーション:
db/migrate/xxxxxxxxxx_create_posts.rb
(xxxxxxxxxxはタイムスタンプに置き換えられます)
Postモデルに対応するテーブルを作成するマイグレーションが含まれます。 -
テスト:
test/models/post_test.rb
Postモデルのテストが含まれます。test/controllers/posts_controller_test.rb
Postsコントローラのテストが含まれます。test/fixtures/posts.yml
Postモデルのテストデータが含まれます。 -
ルーティング:
config/routes.rb
ルーティングファイルに、resources :posts
が追加されます。これにより、標準的なRESTfulルーティングが生成されます。 -
アセット:
app/assets/stylesheets/scaffolds.scss
スタイルシートが生成され、scaffoldに関連する基本的なスタイルが適用されます。
反映
scaffoldで土台を作成したさい、マイグレーションも作られているので、反映させます。
rails db:migrate
作成されたcontrollerの書き方を変更したいので、Gemfile のjbuilderの定義を削除して bundle install を実行します。
サーバを立ち上げ、
http://localhost:3000/posts
にアクセスできればOKです。
ここからは自分自身で拡張していってオリジナルのアプリを作成しましょう。