AnDeriensのブログ

個人的なブログです

RubyOnRailsを始めてみる

RubyOnRailsめちゃ多くないですか。 一回くらい触ってみなきゃなってことで、開発環境構築に着手。

参考ページ

Dcokerの公式ページがこれ

Quickstart: Compose and Rails https://docs.docker.com/compose/rails/

それをちょっと噛み砕いてくれているのがこちら

DockerでのRuby on Rails環境構築を一つずつ詳解する https://qiita.com/daichi41/items/dfea6195cbb7b24f3419

上記手順に従って、できました。

f:id:anderiens:20200125041102p:plain
Hello RubyOnRails !

Railsチュートリアルだと、1.3.3くらいまでのことはここまででできている様子。

ディレクトリ構成

Laravelとかは使ってるけど、Rails初めてなのでとりあえずディレクトリ構成をみる

$ ls -1 .
Dockerfile
Gemfile
Gemfile.lock
README.md
Rakefile
app
bin
config
config.ru
db
docker-compose.yml
entrypoint.sh
lib
log
package.json
public
storage
test
tmp
vendor

それぞれの役割は、Railsチュートリアルに書いてあった。

https://railstutorial.jp/chapters/beginning?version=5.1#sec-development_environment

ディレクト 用途
app/ モデル、ビュー、コントローラ、ヘルパーなどを含む主要なアプリケーションコード
app/assets アプリケーションで使うCSS (Cascading Style Sheet)、JavaScriptファイル、画像などのアセット
bin/ バイナリ実行可能ファイル
config/ アプリケーションの設定
db/ データベース関連のファイル
doc/ マニュアルなど、アプリケーションのドキュメント
lib/ ライブラリモジュール
lib/assets ライブラリで使うCSS (Cascading Style Sheet)、JavaScriptファイル、画像などのアセット
log/ アプリケーションのログファイル
public/ エラーページなど、一般(Webブラウザなど)に直接公開するデータ
bin/rails コード生成、コンソールの起動、ローカルのWebサーバの立ち上げなどで使うRailsスクリプト
test/ アプリケーションのテスト
tmp/ 一時ファイル
vendor/ サードパーティプラグインやgemなど
vendor/assets サードパーティプラグインやgemで使うCSS (Cascading Style Sheet)、JavaScriptファイル、画像などのアセット
README.md アプリケーションの簡単な説明
Rakefile rakeコマンドで使えるタスク
Gemfile このアプリケーションに必要なGemの定義ファイル
Gemfile.lock アプリケーションで使われるgemのバージョンを確認するためのリスト
config.ru Rackミドルウェア用の設定ファイル
.gitignore Gitに取り込みたくないファイルを指定するためのパターン

おそらくapp/以下にコードを書いていくんでしょう。

app以下を確認

というわけで、app/以下を確認。

$ tree app
app
├── assets
│   ├── config
│   │   └── manifest.js
│   ├── images
│   ├── javascripts
│   │   ├── application.js
│   │   ├── cable.js
│   │   └── channels
│   └── stylesheets
│       └── application.css
├── channels
│   └── application_cable
│       ├── channel.rb
│       └── connection.rb
├── controllers
│   ├── application_controller.rb
│   └── concerns
├── helpers
│   └── application_helper.rb
├── jobs
│   └── application_job.rb
├── mailers
│   └── application_mailer.rb
├── models
│   ├── application_record.rb
│   └── concerns
└── views
    └── layouts
        ├── application.html.erb
        ├── mailer.html.erb
        └── mailer.text.erb

17 directories, 14 files

MVCフレームワークなので、models/controllers/viewsあたりが基本になるのかな。

controllerをみる

class ApplicationController < ActionController::Base
end

ここまでみて自分がRubyのクラス定義とかの文法知らないことに気づく。

とはいえ、まあ大体わかる。 継承してるんですね。

クラスを継承する - クラスの継承 - Ruby入門 https://www.javadrive.jp/ruby/inherit/index1.html

二重コロンはモジュール内のクラス呼び出しの記法らしい

Ruby - railsの::について|teratail https://teratail.com/questions/12389

Hello Worldしてみる

なんとなく構成がつかめたので、チュートリアルに沿ってHelloWorldする

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception

  def hello
    render html: "hello, world!"
  end
end
Rails.application.routes.draw do
  root 'application#hello'
end

気付き

  • コントローラ名は、controllerをとった文字になる。

表示できた。

f:id:anderiens:20200125042345p:plain
helloworld

とりあえずここまで。