前回に引き続き、こちらの Rails入門 の記事を進めていきました。
ルーティングの記事についてのメモ
ルーティングのための「routes.rb」内に記述は上から順に参照されるとのこと。
「rake routes」コマンドを実行すると下記のような情報が出てきます。
こちらについてはルーティング関連記事の最後の方で説明があるので、最初は気にせず進めるので良いと思います。
D:\data\rails\sample2>rake routes
Prefix Verb URI Pattern Controller#Action
rails_service_blob GET /rails/active_storage/blobs/:signed_id/*filename(.:format) active_storage/blobs#show
rails_blob_representation GET /rails/active_storage/representations/:signed_blob_id/:variation_key/*filename(.:format) active_storage/representations#show
rails_disk_service GET /rails/active_storage/disk/:encoded_key/*filename(.:format) active_storage/disk#show
update_rails_disk_service PUT /rails/active_storage/disk/:encoded_token(.:format) active_storage/disk#update
rails_direct_uploads POST /rails/active_storage/direct_uploads(.:format) active_storage/direct_uploads#create
それから「root」メソッドの記述は下記で良いようです。
コントローラとアクションがURLと同じ場合は省略できるようで、そのあたりも後のステップでちゃんと解説されていました。
root to: 'info#index'
または
root 'info#index'
公式ガイドのルーティングのページもペタリ。
Rails のルーティング - Rails ガイド
「以前に使われていたルーティング」のステップは下記の内容で正常に動作しました。
[routes.rb]
get ':controller(/:action(/:id))(.:format)'
「matchメソッドを使った基本書式」もこちらでOKでした。
[routes.rb]
get 'disp' => 'books#show'
「HTTPメソッドの指定」は試してませんが Rails 5 では下記のような記述になるのではと‥
[routes.rb]
match 'disp' => 'books#show', :via: :get
match 'disp' => 'books#show', :via: :post
「リソースベースのルーティング」は記事の通りで問題なくいけました。
データベースの記事のメモ
お次はデータベースのステップに入っていきます。
まずMySQLを試すステップの際に、MySQLにログインできずバージョン確認もできません。
環境変数PATHを確認すると、ユーザー環境変数に「C:\Program Files\MySQL\MySQL Shell 8.0\bin\」が登録されているもののシステム環境変数には何も登録されておらずで。
以前、MySQL + SQLを試した際に MySQL5.7 をインストールしたので、今は「MySQL Server 5.7」と「MySQL Shell 8.0」がProgram Filesフォルダ内に存在している状態ですが、後者のフォルダ内には「mysql.exe」はありません。
そこでとりあえずシステム環境変数に「C:\Program Files\MySQL\MySQL Server 5.7\bin」を追加しました(PCの再起動はせず)。
しかしコマンドプロンプトで「mysql --version」と打ち込んでもエラー。
もしやと思ってコマンドプロンプトを起動し直したらいけました。。とりあえずホッ。
こちらの記事を参考にしました。
PATHを設定する | MySQLの使い方
ちなみに数日前にインストール時に決めたパスワードをすっかり忘れており、ちゃんとメモっていた数日前の自分に感謝しましたとさ。。
ちなみにMySQLの終了コマンドはこちら。
quit;
MySQLでデータベース作成コマンドを実行するステップでは、DLLが無い旨のエラーは出ませんでした。Rubyのbinフォルダ内に「libmysql.dll」は見当たらないですが良かったのかしら。。
そして実際に出たエラーはこちら。記事中のものとは少し違います。
「rubyのmysql向けwin32APIの使用は非推奨」「mysql2/2.6/mysql2がロードできない」といった感じでしょうか。試しに「C:\Ruby26-x64\lib\ruby\gems\2.6.0\gems\mysql2-0.4.10-x64-mingw32\lib\mysql2」を開くと「2.6」フォルダが無くて「2.3」までしか存在しません。
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/mysql2-0.4.10-x64-mingw32/lib/mysql2.rb:22: warning: Win32API is deprecated after Ruby 1.9.1; use fiddle directly instead
rails aborted!
LoadError: cannot load such file -- mysql2/2.6/mysql2
D:/data/rails/sample_mysql/config/application.rb:7:in `<top (required)>'
D:/data/rails/sample_mysql/Rakefile:4:in `require_relative'
D:/data/rails/sample_mysql/Rakefile:4:in `<top (required)>'
bin/rails:4:in `require'
bin/rails:4:in `<main>'
(See full trace by running task with --trace)
記事中では「MySQL Connector/C version 6.0.2」のインストールに進みますが、RailsはデフォルトがSQLiteということですし、ここからMySQLのチュートリアルは行わずに進めることに。
またマイグレーション関連ともざっと流し読みに留めました。
テンプレートとヘルパーメソッド
こちら入門記事の最後の章となっていますが、早くアプリケーションが作りたくなったのでとりあえずリンクだけ貼っておいて、実制作のステップに入っていきたいと思います。
rails? rake?
ちなみにコマンドプロンプトで「rails」だったり「rake」だったりして紛らわしいなあと思っていたら実際紛らわしいようで‥ Rails 5 以降は「rails」コマンドで全てOKだそうな。
覚えておこう。。
という訳で今回はここまで!