RubyMine で Rails Tutorial 9章

9章

特に RubyMine の使い方としてどうこうということもなくなってきました。
淡々と進めていきます。内容は結構難しいと思います。

リスト 9.27

リスト 9.28

全般的に難しいセクションだったと思います。

if (user_id = session[:user_id]) … というコードはわたしはあまり好きではないです。バグを産みやすいです。

RubyMine で Rails Tutorial 8章

8章 はログインについて。

もうだんだん RubyMine ではというものはなくなってきました。
淡々とチュートリアルをこなしていきます。

リスト 8.19 の _header.html.erb では、Bootstrap 4 だとドロップダウンのリンクがうまく出ません。
このように直してみました。

リスト 8.20 の app/assets/javascripts/application.js については、特に記述不要です。

こんな感じで表示されるようになりました。

RubyMine で Rails Tutorial 7章

7章

RubyMine で開きたいファイルを探すときは、shift を2回押すのが便利です。
ファイルに限らず、だいたいのものは探せます。

debug は RubyMine にもあるのですが、まだ使い方がよくわかっていません。
チュートリアルにあるように、byebug を使って debugger を埋め込むやり方のほうが手軽のようです。

new.html.erb を動かしたときに、フォームが真ん中に来ませんでした。

Bootstrap 4 のマニュアル を見ますと、offset-md-3 となっています。そのように修正します。

今度は真ん中に来ましたね。

Bootstrap のグリッドシステムでは、ブラウザの幅に応じてレイアウトを変えてくれるようになっています。
ここでは md だけ指定していますが、同時に複数の種類の class を指定することもできます。

col-md-6 offset-md-3 というのは、全体の 12 分割をどう使うかという指定です。
幅が6つ分の要素を作って、左に3つ開けるということで真ん中にくるようにしています。

エラー画面を作るところでは、.has-error がないと怒られました。

これも Bootstrap のマニュアルを見ると、:invalid に置き換わったようですね。そのように修正します。
. でなくて : で始まるクラス名になっているのは要注意です。

リスト 7.25 のテストを直すところは、こんな感じにしておきました。
_error_messages.html.erb に対応して、エラーとなったときに出てくるということです。

リスト 7.34 のテストは、ヒントに従って空文字列かどうかをチェックするようにしてみました。
成功していれば何か入ってますよということです。

最後に、production 環境で SSL 化して終わりです。
Webサーバは Rails 5.2.0 では Puma になっています。

RubyMine で Rails Tutorial 6章

6章やりますか。

Model を作ります。

db:migrate も右クリックからのメニューで実行できます。

チュートリアルでは DB Browser for SQLite が紹介されていますが、RubyMine でも右のほうにある Database メニューから DB を見ることができます。

+ボタンから Data Source → Sqlite を選択します。

ダイアログで右のほうにあるファイル選択ダイアログを開いて、DB のファイルを選択し、
RubymineProjects/sample_app/db/development.sqlite3 を選びます。

Test Connection を押して接続も確認しましょう。

先ほど作った User モデルに対応する users テーブルが見えるようになっています。
ダブルクリックすると select 文が実行されて中身が表示されますが、まだデータを入れていないので空になっています。

User モデルのテストを書きながらモデルも直していくという形で進めていきますが、RubyMine 上で簡単に行き来することができます。

テスト側からは、コマンドキーを押しながら User をクリックすると user.rb に移動できます。
user.rb からは、Goto → Test です。shift + command + T みたいですね。

ここまでは GUI でできるだけ操作するようにしてきましたが、Terminal でやっても同じです。
キーボードを打つほうが早いことも多いですし、そのときに慣れた方法を選んで使えばいいと思います。

最後はユーザを一つ作って終わりです。rails console も RubyMine の中から実行できます。

DB を確認すると正しく一つ入っていることが確認できます。

RubyMine で Rails Tutorial 5章

5章
ようやく Ruby on Rails を使い始めるという感じになって来ますね。

画像をダウンロードして来て assets/images/ に置くというのもでてきますが、RubyMine の IDE 上でもそのまま表示して確認できます。

bootstrap-sass をインストールするところは、bootstrap 4 に対応するモジュールに置き換えてみました。
https://github.com/twbs/bootstrap-rubygem を見ながら導入していきます。

stylesheets/custom.scss を作ります。

stylesheets/application.css を stylesheets/application.scss に変更します。
ファイル名を右クリックして、Refactor → Rename を実行します。

拡張子を scss に変更します。

Preview を押すと影響範囲が出て来ます。

Do refactor を押してファイル名の変更が終わります。

application.scss では custom.scss を import するように書いておきます。

この2行は消しておきます。

次に、javascripts/application.js に追加します。最初に定義されていたものと合わせて、こんな感じになりました。

この状態で rails server を起動してブラウザから見てみると、こんな感じになりました。
チュートリアルの画面とちょっと違うところもありますね。

Bootstrap 4 で変わったところを直してみました。

assets/stylesheets/custom.scss の変更点。

views/layouts/application.html.erb は変更が多くなったのでそのまま載せます。
nav 周りは大きく変わりましたね。

これで近い見た目になりました。先に進みます。

partial に切り出すところについては、RubyMine から切り出す行を選んで Refactor → Extract → Partial で作れます。

切り出した後は <%= render 'shim' %> のようになりますが、<%= render 'layouts/shim' %> と変更しないとうまく読まれないので直す必要があります。

リスト 5.20 の custom.scss では、変数名が変わっていることでそのままでは使えないようになっています。
変数を上の方で定義するのが簡単です。

その後はチュートリアルのまま進めて行けば特に引っかかるところはなかったです。

テストの実行や git の操作は GUI でやっても Terminal からやっても同じです。

RubyMine で Rails Tutorial 4章

4章 は重要なセクションではありますが、あまり新しいところはありません。

まずはじめに、左側のファイル一覧の画面について少々触れておきます。

いろいろな見え方が選択できるようになっていて、デフォルトでは Project になっています。

これを Rails にするとこのようになります。

例えば Controllers を開いていくと、メソッドと対応する view が関連づけられてたどれるようになっていて、これはこれで見やすいと思います。

Rails Console はメニューの Tools から実行できます。

環境 (RAILS_ENV) は Development にして起動します。

一度起動すると、上の実行対象のメニューにも出てくるので、選択して実行ボタンで起動できるようにもなります。

RubyMine で Rails Tutorial 3章

3章。簡単なページからなるアプリと、テストですね。

sample_app として新しくプロジェクトを起こします。
Skip Test::Unit files のチェックボックスを外して、インストールされるようにします。

RoboCop が無効になっていると出て来ました。静的コード分析ツールのようです。有効にしてみますか。

チュートリアルにあるように Gemfile を編集します。バージョン番号は特に指定せず、最新のものを使うようにしてみました。

(編集したところ)

保存すると RubyMine で検知してくれるので、–without production をつけてインストールします。

Process finished with exit code 0 と出てくれば正常終了です。

README.md を編集します。Markdown はプレビューも RubyMine の中でできるので見やすいですね。
編集したら git commit もしておきます。

GitHub でリポジトリを作ります。sample_app という名前でなくても、管理しやすい名前で大丈夫です。わたしは rails_tutorial_2018 にしました。

作ったリポジトリに push する方法も案内されます。

RubyMine のターミナルから実行します。

ちゃんと push できたら、GitHub 側も更新されて見えるようになりますね。

Terminal で git remote -v すると、remote の設定が確認できます。

RubyMine でも、右下の Git のウインドウで確認できるようになっています。

リスト 3-4〜3-5 のように root のルーティングと ApplicationController#hello を追加して、heroku にも push してみます。
実際には git commit は RubyMine の中でポチポチと作業しています。

このとき、git remote -v すると remote として heroku も追加されていることがわかります。

push する先が origin だと GitHub で、heroku だと Heroku へのデプロイということですね。

次はブランチを作ります。RubyMine では先ほど見た右下のメニューから作ります。

static-pages として作ります。checkout してブランチを乗り換えます。

Controller を新しく作ります。New → Run Rails Generator から controller を選択します。

名前やアクションを入れます。

無事作れました。

チュートリアルに沿って view も作ります。適当なタイミングで commit もしておきましょう。

テストも作られています。実行するには上のメニューで環境を test: sample_app にして、実行ボタンを押します。

テストが実行されて結果が出てきます。2つのテストケースを実行して、exit code 0 ということで正常終了しています。

テストケースを書いて、実行して結果を見て、を繰り返すのも簡単です。

Section 3.4 まで終わったら、ブランチを master にマージします。

まず master を checkout します。

static-pages のブランチを選んで、Merge into Current するとマージされます。

マージされました。ブランチは消さずに残しておきます。

あとは GitHub に反映したり、Heroku へのデプロイもしてみましょう。

Guard などの設定も追加でありますが、RubyMine では気軽にテストできるのでここではやりません。
コーディング中に自動で起動されるよりも、明示的にテストを起動したほうがやりやすいとわたしは思います。

RubyMine で Rails Tutorial 2章

次は 2章

同じく rails 5.2.0 でやります。

toy_app として新しくプロジェクトを作成します。

Gemfile を編集すると検知されて bundle install をしようとしますが、 –without production で実行します。
手元では development で、heroku では production でという意味合いですね。

2章では scaffold の練習です。New → Run Rails Generator を開きます。

先頭の何文字か入力して、scaffold を選択します。

引数を入力して OK を押すと作成されます。

右クリック → Diagrams → Show Diagram で図を生成することができます。

1つしかモデルがないのでこんな感じになります。

Terminal のタブで db:migrate します。

これで簡単に動かせるのが scaffold のいいところです。
再生ボタンのようなものをクリックして rails server を起動します。

ブラウザから http://localhost:3000/users にアクセスするとこのように読み書きできる画面が出てきます。

Micropost についても同様に作っていきます。

micropost.rb を編集します。RubyMine ならさくさく補完してくれます。

ブラウザから、もしくは rails console からデータをいくつか入れてみます。

RubyMine の右のほうにある Database を開いて、Data Source から Sqlite を選択します。

ドライバがないと言われるので Download をクリックするとインストールされます。
RubyMine から読み込むためのドライバなので、Gemfile で入れたものとは別に考えましょう。

File: の右にある選択ボタンをクリックして、toy_app/db/development.sqlite3 を選択します。

Test Connection を押して接続を確認しておきます。

OK を押して RubyMine の画面に戻り、開いていくと DB の中が覗けるようになっています。

テーブルをダブルクリックすると select 文が実行されて中身が表示されたりもします。

heroku への deploy は省略します。1章と同じです。

RubyMine で Rails Tutorial 1章

Rails Tutorial では Rails は 5.1.4 になっていますが、最新版の 5.2.0 でやってみます。

開発環境は RubyMine を使うことにしました。

hello_app でプロジェクトを作成します。

自動的にあれこれ作成されたり gem install が走っていたりします。

再生ボタンを押すと rails server が起動して、ブラウザから http://localhost:3000 にアクセスすると起動画面がでてきます。

次は hello world ですね。

app/controllers/application_controller.rb を開いて編集します。いろいろ補完が効いて便利です。

config/routes.rb を編集して、上で定義したメソッドが呼ばれるようにします。

ブラウザで http://localhost:3000 を開いていた画面をリロードすると hello, world! と出るようになりました。

このとき、RubyMine の Console でログが出ているのも見ておきましょう。

git は下のほうにある Version Control のタブで操作します。

Unversioned Files の対象を browse のリンクからクリックして、git の管理下に繰り入れます。

commit ボタンをクリックします。

Commit Message を入れて Commit ボタンを押すと git に入ります。

今回は使いませんが、github の設定もしておきます。

メニューから Preferences を選択して、Version Control → GitHub を開きます。
Create API Token をクリックすると github のユーザ名とパスワードを聞かれて、二段階認証を経てトークンが作成されるようになります。

Test をクリックしてアクセスできることを確認しておきましょう。

Heroku にデプロイしてみます。

まず Gemfile を編集して、production では DB のドライバに PostgreSQL を使うようにします。

heroku コマンドでログインして、アプリケーションの作成、デプロイをします。

Bitbucket については省略しました。

Minishift

昨日作った Minishift ですが、ネットワーク共有の設定が変わってしまって Wi-Fi が繋がらなくなったため、よくわかっている VirtualBox を使うようにしてみました。

メモリも 2GB から 16GB に増やしてます。

CPUの数も増やしてみました。設定は config に設定しておくといいようです。