SAMインターフェースのメソッドは一つだけ
SAMインターフェースは一個のメソッドしか定義できない。
interface MyFunction { int call(int x); }
インターフェース型変数にメソッド参照を入れるの慣れない。
直感的に捉えられる日は来るのだろうか。
Ruby ハッシュのデフォルト値
ハッシュの存在しないキーのデフォルト値について。
exampleA = {} p exampleA[:foo] # -> nil exampleB = Array.new p exampleB[:foo] # -> nil exampleC = Array.new(0) p exampleC[:foo] # -> 0
newした時の引数にデフォルト値を設定できる。
何もしなければnil。
普通にexample = {}で宣言した時にデフォルト値を渡す方法はあるんだろうか・・・
HerokuでBuild FailedしたらGemfileを見る
ドットインストールRails入門のTaskAppができた。
ためしにHerokuにあげてみようと
$ git push heroku master
したらBuild Failedしたのでメモ。
少し前なら折れていたが・・・多少メンタルが強くなったのか、エラーメッセージを漁ってみた。
remote: checking for sqlite3.h... no remote: sqlite3.h is missing. Try 'brew install sqlite3',
HerokuはPostgreSQLをサポートしている。
僕があげようとしていたGemfileはsqliteを入れることになっていたのでこんなエラーが出たんだろう。
sqliteをpgに入れ替えて再度pushしたら無事デプロイできましたとさ。
作ったTaskApp
https://ancient-sea-24379.herokuapp.com/
追記:
migrate忘れてた。
$ heroku run rake db:migrate
参考:
tech.gmo-media.jpRails generateを間違えたときのdestroy
$ rails generate model hooge
名前を間違えて作ってしまったら。
destoryで消してやり直せる。
$ rails destroy model hooge $ rails generate model hoge
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特有の丸かわいい感じになってれば成功。