Rails超初心者のいろいろ
Railsチュートリアル7〜8章くらいで完全についていけなくなってしまったので、中断した。
諦めてはいない。戦略的撤退。
特にActiveRecordの不理解が全体の俯瞰を妨げている感があったのでドットインストールでActiveRecord入門をざっと視聴。
だいぶマシになった気がする。
ActiveRecordとは要はSQLを使わずにRuby文法でDBを操作することを可能にする便利ツール的なもののようだ。
Bootstrap入門も半分くらい視聴。
とりあえずこれは暗記したらいけるっぽい。
気に入らない部分をちょこちょこCSSで編集すればいい感じだろう。
進むことを優先しすぎた感がある。
一度振り返る必要がある。
特に基本的と思われる部分を自分なりにまとめてみる。
よく使うRailsコマンド
$ rails new 名前
超基本。アプリの骨格をザッと作る。
$ rails generate model 名前 table列名:データ型
modelはDBをごにょごにょする何か。
単数形でgenerateする。
列名は複数書いていける。
自動的に一意のid列も生成される。
$ rails generate controller 名前
controllerはviewをわちゃわちゃする何か。
複数形でgenerateする。
名前は複数書いていける。
modelもcontrollerも頭を大文字にしてgenerateする。
$ rake db:migrate
今これを書いててはたと手が止まった。マイグレーションについて何も理解していなかったことに気づいた。
何をしているのか。ググっても釈然としない。要はDBを作るコマンド・・・?
modelの段階で列名は書いてるし、そこでDBできてるんじゃないのか?と思っていたが、どうも違うっぽい。
ここは本当に自信がないのだけれども、ググって出てきたサイト(本記事末尾に掲載)をサーッと眺めた限りでは、generate modelの段階では、マイグレーションファイルというDBのレシピ的なものが作られるだけで、rake db:migrateすることによってレシピに基づいたDBの実態が生成されるようだ。
もし違ったらご指摘ください。
$ rake routes
link_toの後になんて書いたらいいんだっけというときに叩く。
よく触るファイル
controllers/concerns/xxxx_controller.rb
def xxxx end
xxxxはビュー名と合わせる。
views/layouts/application.html.erb
ビューファイルの共通部を書く。
ここに書くと他にも反映される。
DRY精神の片鱗を見ることができるすごいやつ。
views/xxxx/xxxx.html.erb
共通部以外を記述していく。
generate controllerの際にコントローラと一緒に作ることもできる。
config/routes.rb
root 'コントローラ名(xxxx_controller.rbのxxxx部)#ビュー名(xxxx.html.erbのxxxx部)' get 'コントローラ名#ビュー名' resouces :モデル名
最低限この辺抑えとけばなんとかなりそう。なってくれ。
参考:
www.transnet.ne.jp
ドットインストール Rails入門
http://dotinstall.com/lessons/basic_rails_v2/24912
ActiveRecord .newと.createの違い
テーブル名.new テーブル名.save
newはオブジェクトを作るだけ。
saveしないとdbに記録されない。
テーブル名.create
newとsaveをまとめてやってしまうのがcreate。
RailsにBootstrapを導入
Gemfileに以下を追加。
バージョンは任意で。
gem 'bootstrap-sass', '3.3.6'
bundle installする。
$ bundle install
app/stylesheetsにcustom.scssを追加。
内容は、
@import "bootstrap-sprockets"; @import "bootstrap";
としておく。
お試しのページを作ってみる。
$ rails g Static_pages home
app/views/static_pages/home.html.erbの内容を
<html> <head> <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> </head> <body> <button type="button" class="btn btn-primary">Primary</button> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script src="js/bootstrap.min.js"></script> </body> </html>
とする。なんとなくボタンで確認。
ボタンがbootstrap特有の丸かわいい感じになってれば成功。
RubyonRails HerokuでHelloWorldするまで
前提:
Ruby・Rails・git・herokuツールベルトをインストールしている。
(筆者はCloud9使用。Ubuntu。)
Herokuの会員登録を終えている。
まず適当なアプリを作る。
Cloud9ならすでにあるのでこの工程は要らない。
$ rails new myapp $ cd myapp
Gemfileを下のように書き換える。
(Railsチュートリアルそのまま)
source 'https://rubygems.org' gem 'rails', '5.0.0.1' gem 'puma', '3.4.0' gem 'sass-rails', '5.0.6' gem 'uglifier', '3.0.0' gem 'coffee-rails', '4.2.1' gem 'jquery-rails', '4.1.1' gem 'turbolinks', '5.0.1' gem 'jbuilder', '2.4.1' group :development, :test do gem 'sqlite3', '1.3.11' gem 'byebug', '9.0.0', platform: :mri end group :development do gem 'web-console', '3.1.1' gem 'listen', '3.0.8' gem 'spring', '1.7.2' gem 'spring-watcher-listen', '2.0.0' end group :production do gem 'pg', '0.18.4' end
bundle installする。
$ bundle install --without production
赤文字でエラーが出たら読んでみる。
'bundle update'がどうとか書いてたら
$ bundle update
を叩けばOK。
終わったら改めてbundle installする。
controllers/concerns/application_controller.rbを下のように書き換える。
class ApplicationController < ActionController::Base protect_from_forgery with: :exception def hello render html: "hello, world!" end end
config/routes.rbを下のように書き換える。
Rails.application.routes.draw do root 'application#hello' end
gitの初期設定。
$ git config --global user.name 名前 $ git config --global user.email メールアドレス
heroku設定。
$ heroku login $ heroku keys:add
myapp直下でgit initする。
$ git init
ステージに上げてコミット。
$ git add -A $ git commit -m "hello, world!"
heroku側でアプリ作成。
自動的にgitに紐づくようなのでそのままpush。
$ heroku create $ git push heroku master
ターミナルに出てくるURLにアクセス。
参考:
railstutorial.jp
ORACLE 桁を揃えるLPAD
111
こいつを四桁にしたいとき。
足りない桁は頭に0を入れて保管する。
最初NUMBER型とする。
LPADの書き方は
LPAD('文字列', 桁数 , '補完文字')
桁数は数値型なので''(シングルクオーテーション)はつけない。
NUMBERの111をTO_CHARしてLPADする。
SELECT LPAD(TO_CHAR(111), 4, '0') FROM DUAL
ORACLE NUMBER型の日付を文字列yyyy/MM/dd表記で表示する
20110401
NUMBER型のこいつを書式を整えて表示する方法。
まず、TO_DATEしたいのだけど、TO_DATEの書き方は
TO_DATE('文字列', '書式')
なので、NUMBER型の20170401をまずTO_CHARする。
TO_CHAR(20170401)
それからTO_DATEをかける。
TO_DATE(TO_CHAR(20110401), 'yyyyMMdd')
TO_CHARの日付書式変換の書き方は
TO_CHAR('文字列', '書式')
で、こうなる。
TO_CHAR(TO_DATE(TO_CHAR(20110401), 'yyyyMMdd'), 'yyyy/MM/dd')
テキトーにテスト表示したければ、
SELECT TO_CHAR(TO_DATE(TO_CHAR(20170401), 'yyyyMMdd'), yyyy/MM/dd) FROM DUAL
A server is already running と出て rails server できないとき
$ rails s => Booting Puma => Rails 5.0.0.1 application starting in development on http://localhost:8080 => Run `rails server -h` for more startup options A server is already running. Check /home/ubuntu/workspace/sample_app/tmp/pids/server.pid. Exiting
こんなん出た。
よく読むとなんか書いてる。
A server is already running. Check /home/ubuntu/workspace/sample_app/tmp/pids/server.pid.
言われた通り server.pid をチェックする。
というか消す。
pids まで行って、
$ sudo rm server.pid
これで rails s したら無事動いた。