最初に
自身で学習してきた内容を書き出していきます。
基本的には自分自身でわかるような内容になりますので、ご容赦ください。
また、誤っている点がありましたら、コメントにてご指摘ください。
(要確認)マークがあるものは、「実行前に必ずググる」べき内容。
Subline Text
下記はSubline Textを使用した開発を前提に進めます。
また、自分自身でも理解しやすいように、拡張子は基本的にHTMLにしています。
index
- アップデートエラー
- 新規アプリケーション作成
- controller
- (view)
- ルーティング
- model
アップデートエラー
Ruby on Railsのアップデートによる可能性が高いエラー
Errno::EPERM: Operation not permitted @ chown_internal -
/tmp/bundler2018mmdd-27024-qf4sfs/bin
An error occurred while installing [gem名] (x.x.x), and
Bundler cannot continue.
Make sure that `gem install [gem名] -v 'x.x.x' --source
'https://rubygems.org/'` succeeds before bundling.
Railsサーバー立ち上げ
$ rails s -b 0.0.0.0 # $ rails server -b 0.0.0.0の短縮記述
http://localhost:3000 で確認しよう
control + c でサーバーを停止
control + zを打ってしまったら(実行中のプログラムを一時停止してしまったら)
$ lsof -wni tcp:3000
$ # 結果
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ruby2.5 xxxxx vagrant 16u IPv4 109558 0t0 TCP *:3000 (LISTEN)
$ kill -9 xxxxx # PIDの数字をxxxxxに代入
新規アプリケーション作成
$ rails new アプリケーション名 # アプリケーションの作成
$ rm -rf アプリケーション名 # アプリケーションの削除
controller(app/controllers/コントローラー名sController.rb)
コントローラの命名規則
種類 | 概要 | 概要 |
---|---|---|
コントローラ名 | 複数形、先頭は英小文字 | homes |
コントローラのクラス名 | 複数形、先頭は英大文字 | HomesController |
ファイル名 | 複数形、先頭は英小文字 | homes_controller.rb |
$ rails g controller コントローラ名s index show new edit # viewを使うアクションをまとめて作成
$ rails g controller コントローラ名s # コントローラ名sを作成
$ rails d controller コントローラ名s # コントローラ名sを削除
g(generate)は、コントローラやアクションをまとめて自動設定できる便利なコマンド。
上記のまとめて作成した例だと、下記が同時に作成される。
- コントローラー名sコントローラ
- indexアクション
- showアクション
- newアクション
- editアクション
- コントローラー名s/index.html.erbファイル
- コントローラー名s/show.html.erbファイル
- コントローラー名s/new.html.erbファイル
- コントローラー名s/edit.html.erbファイル
view(app/views/コントローラー名s/view名.html.rbなど)
command + n で新規ファイルを作成
命名は、コントローラーで指定したアクション名でOK
indexアクションの場合
index.html.erb
ルーティング(config/routes.rb)
indexからdestroyまでの7つのアクションのことを、RESTfulなURLと呼ぶ。
RESTfulとは、REST(REpresentational State Transfer)の設計思想に基づいたシステムのこと。
Railsではresourcesメソッドを利用すると自動で設定してくれる優れもの。
Rails.application.routes.draw do
# For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
get 'hoges/index' # 基本記述の一例
resources :コントローラー名s # index,show,new,create,edit,update,destroyの7種類が全て詰まってる
resources :コントローラー名s , only: [:index, :show] # 指定する場合
resource :コントローラー名s # 単数にすると、そのコントローラのidがリクエストに含まれなくなる
root to: "コントローラー名s#アクション名" # /に設定(初期ページ)
get '/hoge/about' => 'hoges#show', as: :about # ルートパス名を指定したい場合
end
resourcesとresourceの使い分けに注意。
ネスト
また、ネストすることもできる。(親子関係)
例として、「ある投稿画像に関連付けられたコメント」と認識できるURLを作る時。
Rails.application.routes.draw do
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
resources :hoge_images, only: [:new, :create, :index, :show] do
resource :hoge_comments, only: [:create]
end
end
hoge_image_hoge_comments POST /hoge_images/:hoge_image_id/hoge_comments(.:format) hoge_comments#create
ルーティングの確認
$ rails routes
model
$ rails g model モデル名 カラム名1:データ型1 カラム名2:データ型2 ... #モデルとテーブルを同時作成
$ #例
$ rails g model Hoge title:string category:string body:text
$ rails g model モデル名 # モデルを作成
マイグレーションをデータベースに反映する
$ rails db:migrate
オプションの追加などは、マイグレーションファイルを用途ごとに作成し、データベースに反映する必要がある
カラムの追加
$ rails generate migration remove_カラム名_to_テーブル名 カラム名
$ # 例
$ rails generate migration remove_hoge_to_huga hoge
$ rails db:migrate # 変更を反映
カラムの削除
$ rails generate migration remove_カラム名_to_テーブル名 カラム名
$ # 例
$ rails generate migration remove_hoge_to_huga hoge
$ rails db:migrate # 変更を反映
カラムのデータ型変更
$ rails generate migration change_カラム名_to_テーブル名
$ # 例
$ rails generate migration change_hoge_to_huga
class ChangeColumnToHuga < ActiveRecord::Migration
#変更後の型
def up
change_column :Hugas, :hoge, :integer, null: false, default: 0
end
#変更前の型
def down
change_column :Hugas, :hoge, :intger, null: true
end
end
$ rails db:migrate # 変更を反映
追加あれば、どんどん更新していきます。
駆け出しとして頑張ります。