LoginSignup
3
7

More than 3 years have passed since last update.

Ruby on Railsについて(基礎/コマンド)

Last updated at Posted at 2020-03-04

最初に

自身で学習してきた内容を書き出していきます。
基本的には自分自身でわかるような内容になりますので、ご容赦ください。
また、誤っている点がありましたら、コメントにてご指摘ください。

(要確認)マークがあるものは、「実行前に必ずググる」べき内容。

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メソッドを利用すると自動で設定してくれる優れもの。

config/routes.rb
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を作る時。

config/routes.rb
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
マイグレーションファイルの作成日時_change_column_to_Huga.rb
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 # 変更を反映

追加あれば、どんどん更新していきます。

駆け出しとして頑張ります。

3
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
7