Cloud9でrails serverできない
こんなん出た。
$ rails s -b $IP -p $PORT => Booting Puma => Rails 5.0.0.1 application starting in development on http://0.0.0.0:8080 => Run `rails server -h` for more startup options Puma starting in single mode... * Version 3.4.0 (ruby 2.3.0-p0), codename: Owl Bowl Brawl * Min threads: 0, max threads: 16 * Environment: development * Listening on tcp://0.0.0.0:8080 Exiting /usr/local/rvm/gems/ruby-2.3.0/gems/puma-3.4.0/lib/puma/binder.rb:255:in `initialize': Address already in use - bind(2) for "0.0.0.0"
再起動したら直った。
Cloud9 再起動する方法
Cloud9でOSの調子が悪くて再起動したい時のメモ。
画面右上のこれをクリック。
↑これ。
クリックするとなんかシュッと出てくる。
右下のRestartをクリック。
ちょっと待って完了。
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