LoginSignup
0
0

More than 1 year has passed since last update.

cloud9でのrails環境構築と入門的内容

Posted at

個人的リマインド用

参考
はじめてのRuby on Rails入門-RubyとRailsを基礎から学びウェブアプリケーションをネットに公開しよう

環境構築

Rubyバージョン管理
クラウド9ではrbenvではなくRVMを使う

rvm -v バージョン確認
rvm list 使えるRubyバージョンの確認
rvm get stable rvmをアップグレード
rvm install ruby-[指定バージョン] rubyをバージョン指定でインストール
rvm use [指定バージョン] Rubyバージョン切り替え
rvm --default use 3.0.2 指定バージョンをデフォルトにする

Rails環境構築
基礎用語
・bundler→RubyGemsを管理するもの
・RubyGems→Rubyのパッケージ管理ソフト

rails -v railsのバージョン確認
gem -v gemのバージョン確認
gem install rails -v [指定バージョン] -N 
-v以降なしだと最新バージョンをインストール、-Nはドキュメントをインストールしないオプション

Rails入門

Railsの超初歩

Railsの基本理念

設定より規約
例えば、データベースのテーブル名はモデルの複数形にする(User→users)など
規約に乗ることで、よりサービスの本質的なとこに注力できるようになる

DRY(Don't Repeat Yourselef)
同じことを繰り返さない(重複したコードを1箇所にまとめる)

MVCアーキテクチャ

Model
データベースアクセスなどデータ関連処理
View
画面表示
Controller
リクエストやレスポンスを制御
ViewとModelの橋渡し

役割ごとに分けてかくことで、プログラム全体の見通しがよくなり、メンテナンス性が高まる。

Hello world出力まで

新規のRailsプロジェクトを作る
rails [_Railsバージョン_] new [プロジェクト名]
例:rails _7.0.0_ new hello バージョンは指定する場合のみ

サーバー立ち上げ
rails s(server) 

サーバーを立ち上げても変な画面
Railsではセキュリティ上の理由からホワイトリストに登録されていないホストでアクセスした場合に、ブロックされてしまう。

ホワイトリストをクリア
config → environments → development.rbの一番下に
config.hosts.clear てな感じで書くと大丈夫

Controllerを作成
Controllerを作るにはrails generateが必要

ディレクトリが現在のプロジェクトであることを確認
rails g controller [コントローラーにつける名前] [定義するメソッド、アクションの名前]
例:rails g controller users index

※コントローラーにつける名前は複数形にすることが普通だが、homeコントローラーとかinfoコントローラーとか
データベースと直接結びつかない場合は単数形にする場合もある

以上のコマンドでいろいろファイルができるが必要なところを見ていく
・app/controllers/users_controller.rb
(中を見てみるとUsersControllerはApplicationControllerを継承している)
コントローラーはアプリケーションに対する特定のリクエストを受け取って処理する役割がある

今回の場合indexメソッドがある。これはクライアントからのリクエストに対して具体的な処理を実行するためのメソッド。

上記メソッドの中にHello worldを出力する内容を書く
def index
  render plain: 'Hello world'
end

renderメソッドは、ブラウザで表示するコンテンツのレンダリングを行うメソッド
plainオプションを使用すると、平文のテキストをブラウザに表示できる

開いてるサーバーのURLを
~/users/indexにするとHello worldが表示される

ルーティングの変更
ルーティングとはURLとアクションを結びつける設定のこと

アクションとURLの対応を確認する
rails routes

routesを見てみると情報が4行ある
・Prefix→リンクを設置するときなどにパスを指定する時に使う
・Verb→GET,POST,DELETEなどのメソッド名が記載
・URI Pattern→アドレス
・Controller#Action→users#index(コントローラー名#アクションが実行されるということ)

config/routes.rbファイルに記述してルーティングを設定
Rails.application.routes.draw do
  get 'users/index' #userコントローラーのindexアクションを実行しろという意味
end

上記のものはrails gで自動的に記述される
また 
get 'users/index', to 'users#index'の省略形
'users', to 'users#index'にするとリンクが~/usersになる

Viewの利用

現状はControllerにViewの機能を持たせている変な状態

app/views/users/index.html.erbができている
erbはHTML内にRubyを埋め込める(Rubyの標準ライブラリ)

規約
例:
app/views/users/index.html.erb
ルール:
app/views/コントローラー名/アクション名.html.erb
こういったのを勝手にやってくれる

erbにRubyの処理を埋め込む
<p><%= 10 + 1 %></p>
=をつけることで画面に表示される

コントローラーからviewに渡す
HTMLないでの計算は好ましくない

users_controllerにて
def index
  @num = 10 + 1
end

@numをviewで書く

modelの作成

例題→ユーザーを管理するUserモデルを作成(nameとageを持つ)

modelの作成
rails g model [モデル名] [データ構造]
例: rails g model User name:string age:integer

※model名は単数形

・db/migrate/(timestamp)~~~
これはマイグレイションファイルと呼ばれるもの

・models/user.rb
モデルクラスを定義するファイル
migrationの実行
rails db:migrate

データベース構造の確認

rails console
データベースをコマンドで操作できるモードに(標準はsqlite)←画面が変な感じ
困った時は.quitで抜けよう

.tables テーブルの確認、左2つはRubyの標準のもの
.schema users 構造確認

データベースの操作

rails c(console)

User.all ← SELECT * FROM 'users'

データの挿入方法
user = User.new インスタンスの作成
user.name = '~~'
user.age = ~~
user.save 最後に保存を忘れずに
1行ですませる
lucas = User.new(name: 'Lucas', age: 24)
lucas.save

idを指定してデータを取得
User.find(id)

値のupdate
yamada = User.find(id) 変数に保存
yamada.name = '~~'
yamada.age = ~~
yamada.save

削除
yamada = User.find(id) 変数に保存
yamada.destroy
1行ですませる
User.find(1).destroy

データベースの値をWebページに表示

uesrs.controllerにて
def index
  @users = User.all インスタンス変数に保存
end
現在3つのデータが入っているとする
eachで取り出す

<ul>
  <% @users.each do |user| %>
    <li>
      <%= user.id %>, <%= user.name %>, <%= user.age %>
    </li>
  <% end %>
</ul>
0
0
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
0
0