Ruby on Rails [Model-Controller-View]
Modelの作成
VS Codeで「rails new」 で作成したアプリのフォルダを開きます。
「rails generate model モデル名 項目1:型 項目2:型 ...」のような形でコマンドを実行します。
rails generate model book title:string price:integer
上記は「モデル名=book」でフィールドとして「書名」と「価格」を持たせています。
実行すると \app\models\book.rb \db\migrate\yyyyMMddHHmmss_create_books.rb \test\fixtures\books.yml \models\book_test.rb
など複数ファイルが作成されます。
次にデータベースにテーブルを作成します。
上記「\db\migrate\yyyyMMddHHmmss_create_books.rb」を使用します。
rails db:migrate
これで勝手にbooksテーブルが作成されます(^^)
Railsが「yyyyMMddHHmmss_create_books.rb」を見つけてきて勝手に実行してくれるらしい...(笑)
「yyyyMMddHHmmss_create_books.rb」が何かというと、テーブル作成するためのコードで
「rails generate model book title:string price:integer」で指定した「書名」「価格」をカラムに持つ
booksというテーブルを作りますと書かれたコード。たぶん。
なんでbookに勝手にsが付いているのかは謎です(_*;
テーブルを作ったのでちょっとだけデータを入れます。
「\test\fixtures\books.yml」を使います。 おそらく何件か既に記述されていると思いますが、変更するのであれば"yml"の書き方に従って変更してください。 以下コードでファイルの内容がbooksにインサートされます。
rake db:fixture:load FIXTURES=books
データ入りました(*^^)v
確認方法!
SQLite Download Page
↑
ここから「sqlite-tools-win32-x86-3220000.zip(1.62 MiB)」をダウンロードしてsqlite3.exeをC直下のRubyフォルダに配置してください。
(64bit版は提供がないらしいので、32bitのものを使用)
VS Codeのターミナルから下記を実行
rails dbconsole
select * from books
で先ほど入れたデータが表示されるはず! ※「.exit」でdbconsoleを終了できます。
コントローラーからモデルの内容を取得する
「\app\models\book.rb」にはほぼ何も書かれていませんが、親クラスの機能だけで既にDBにアクセスできる状態です。
(ただし、「\config\databace.yml」でDB接続情報を設定していること→デフォルトでsqlite3に接続できる設定になっている)
コントローラーに以下のコードを記述して「/views/xxx/list.html.erb」を作成
def bookList @books = Book.all end
「/views/xxx/list.html.erb」には下記を記述します。
<table border=2> <tr> <th>書名</th> <th>価格</th> </tr> <% @books.each do |book| %> <tr> <td><%= book.title %></td> <td><%= book.price %></td> </tr> <% end %> </table>
rails s でサーバーを起動して
「http:locahost:3000/xxx/bookList」にブラウザでアクセス!
DBに登録した内容がブラウザに表示されていれば成功です(*^^)v
Ruby on Rails [Controller-View]
ControllerとView
-バージョン Ruby :2.4.3p205 Rails :5.1.5
前回はControllerから直接ブラウザに文字を表示させていましたが、 今回はしっかりViewを使って表示します。
コントローラーの準備
まずは前回同様
hello_controller.rbを作成します。
作成したファイルに以下を記述
def view @msg = 'Hello World!' render 'hello/special' end
※@msgはViewで使える変数です。 ※render 相対パス(→./views/ 配下のフォルダorファイルを記述)
ビューの準備
新規ファイルを作成します。 ./views/hello/special.html.erbを作成 ↓中身のサンプル
<div> <%= @msg -%> </div>
HTMLの中にRubyのコードを埋め込んでいます。 「<%= %>」→このコードの間にrubyのコード埋め込みます。 @msgは先ほどControllerで指定した変数です。 最後の「-」をつけることで末尾の余計な空白や改行を削除してくれます。
これで保存して起動すると'Hello World!'が表示されます(*^^)v
Hello World!
Ruby on Rails 勉強開始です!
Hello World!をブラウザに表示します!
参考にさせて頂きました。 www.rubylife.jp
まずは
railsでアプリを作成
まずは骨組みから用意です。
powershellを開いてから cd コマンドでカレントディレクトリを移動します。
''' cd C:\temp '''
アプリケーションを作成します。
''' rails new app_name '''
アプリケーションフォルダをVS Codeで開きます。
※ここからはMVCがどうとかの話になってくるので、どういう意味か程度で調べておいたほうが良いです。
VS Codeからターミナルを開いてコントローラーファイルを作成する
(表示されていない場合はサイドバーから虫マークを選んで上部の長方形マークで表示する)
作成
「rails generate controller コントローラー名」でいくつかフォルダとファイルが作成されます。
コントローラー名は任意で、続けてアクションメソッドを書くこともできます。
「rails generate controller コントローラー名 アクションメソッド名」
rails generate controller hello index
削除
「rails destroy controller コントローラー名」で先ほど作られたファイルとフォルダが一括削除されます。
rails destroy controller hello
rails generate controller を実行すると
「./app/controllers/hello_controller.rb」が作成されます。
ファイル内に以下を記載して、ターミナルから「rails s」を実行
class HelloController < ApplicationController def index render :plain => 'Hello World!' end end
ブラウザで localhost:3000/hello/indexにアクセスでHello World!が表示されます(*^^)v
はまりました...
↓この部分!Rails古いバージョンでは「plain→text」にしないとダメなようです( ;∀;)
render :plain => 'Hello World!'
あと「rails generate controller コントローラー名」でコントローラーを作成した場合は 「./view/hello」配下に自分で「index.html.erb」を作成しなければいけません。(不要であればスルーしてください。) また、ルートも自分で記述しないといけません。
Rails.application.routes.draw do get 'hello/index' end
RubyをVisual Studio Code(VS Code)で書きたい!
タイトル通りRubyをVisual Studio Codeで書くための設定手順です。
前提として、Ruby on Railsをインストールしている必要があるかも...
まずはVS Codeをインストールします。
公式からダウンロードします。
code.visualstudio.com
拡張機能(左サイドバー一番下の四角いやつ)で「Ruby」を検索→インストールします。
以上です!
ただし、VS Codeでデバッグをしたい場合は以下をインストールする必要があります。
※本当はbundleコマンドを使ったほうが良いと思いますが、できるだけハードルを下げたいのでgemで(笑)
gem install ruby-debug-ide
gem install debase
上記を実行したらgem listをpowershellで実行してインストールされているか確認します。
gem list
無事インストールできていれば、VS Codeに戻ってRubyのファイルを作成します。
VS Codeでファイル(F)→新規ファイル(N)でファイルを作成して「main.rb」という名前でファイルを作成します。
.rbはRubyの拡張子です。
ファイルに書く内容は適当。
以下サンプル
print("Hi!");
ファイルができたらデバッグの設定をします。
左サイドバーの虫マーク(下から二番目)を押下して上段の歯車マークを押下します。
リストからRubyを選択するとlaunch.jsonファイルが作成されますので、
「"name": "Debug Local File"」が記述されているところに
「useBundler」の記述があればコメントアウトするか削除します。
「useBundler」は直接でデバッグツールのパスを指定する場合に必要とかどこかに書いてました(笑)
すいません。あんまりよくわかってません(*_*;
launch.json(設定)ファイルを保存したら
サイドバー上部の△ボタンを押下します。
歯車ボタン横の四角を押すと画面下部にデバッグコンソールなるものが表示されるので、そこに
「Hi!」と表示されていれば成功です!
私は最初
「Debugger terminal error: Process failed: spawn rdebug-ide ENOENT」
というエラーが発生!!
Rubyを入れ直し、ruby-debug-ideを入れ直してVS Codeを再起動して何とかデバッグできるようになりました(*_*;
Rubyは環境構築大変です!
Rubyのバージョンは違いますが、参考にさせて頂きました。↓
d.hatena.ne.jp
qiita.com
Ruby 環境構築(Windows10)
開発備忘録 -Ruby編
Ruby の環境をWindows10で構築していきます。
Rubyにはバージョンがいくつかあり、今回は「Ruby 2.4.3-2 (x64) 」をインストールします。
下記ページの左サイド [RubyInstallers]の欄から「Ruby 2.4.3-2 (x64)」をクリックしてダウンロードします。
rubyinstaller.org
※ちなみに、Ruby2.3.3以下と、Ruby2.4.x以上ではインストールの方法が違うようです。
古いバージョンをインストールする際は下記を参考に
www.sejuku.net
さて、インストールにあたり私は以下を参考にさせていただきました。
qiita.com
手順としては...
①まず上記でダウンロードしたファイル(RubyInstaller2)を実行します。
インストール画面途中の設定項目のチェックは全て付けた状態で進めました。
②インストールが完了したらMSYS2を入れるcmd.exeが表示されます。
MSYS2をまだインストールしていない場合はキーボードで1を押し、インストール完了後に3を押します。
画面が閉じてしまった場合はRubyInstaller2をもう一度実行してMSYS2のcmd.exeを立ち上げ、次は3を押します。
(多分現段階ではRubyInstaller2を何回実行しても大丈夫)
③Rubyのインストールは完了しましたが、今度はRailsをインストールします。
まずはRailsをインストールするために「sqlite3とnokogiriが必要!」とのこと。
なのでインストールします。
powershell(コマンドライン)を開いて下記のコードを順に実行します。
※[ridk ,gem]コマンドについて、これらはRubyを入れたことで一緒に入ります。
もしこのコマンドが存在しないと怒られるようでしたら、一度powershellを閉じます。
それでもだめなら環境変数にRubyのパスが記述されていない可能性があるので、環境変数を確認してください。
# sqlite3
ridk exec pacman -S mingw-w64-x86_64-sqlite3
gem install sqlite3 --platform ruby
# Nokogiri
ridk exec pacman -S mingw-w64-x86_64-libxslt
gem install nokogiri --platform ruby -- --use-system-libraries --with-xml2-include=c:/msys64/mingw64/include/libxml2 --with-xslt-dir=c:/msys64/mingw64
※gem→Rubyに必要なものをインストール・管理するためのコマンドくらいに思ってます。
※本当はここからboundleコマンドを使った方がいいです。
問題なく入りました(*^^)v
➃gem install railsを実行してRailsをインストールします。
gem install rails
インストールされているか確認します。(下記はバージョン情報を表示するコマンド)
ruby -v
rails -v
バージョン情報が表示されなければインストール失敗かもしれません。
Railsで私は躓きました( ;∀;)
RubyをアンインストールしてRubyのフォルダ(いじっていなければCフォルダ直下にRubyxxxフォルダが存在するはず)を削除すればおそらく最初からやり直せるので、
アンインストール→インストールをやりまくりました(笑)
実際ダウンロードはたぶんできていて、なにが原因かはわかりませんでしたがgemが足りないエラーが続出...
powershell を一旦閉じたり、作業フォルダを変えてみたりしていつの間にか成功しました!
下のコードでプロジェクトを作り、ブラウザなどでhttp://localhost:3000を開いてページが表示されればとりあえず成功です!
※application_nameは任意
rails new application_name