americandog1993の日記

プログラマー歴半年のメモ

Bootstrapサイトをスマホ対応させる

勝手にいい感じにレスポンシブデザインにしてくれるという触れ込みのBootstrap。
でもなぜかスマホでPCレイアウト表示される時。

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">

headタグの中にこいつを入れる。

参考
【CSS】スマホで Media Queries が効かないときの対処法 - Qiita

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" 

再起動したら直った。

SAMインターフェースのメソッドは一つだけ

SAMインターフェースは一個のメソッドしか定義できない。

interface MyFunction {
  int call(int x);
}

インターフェース型変数にメソッド参照を入れるの慣れない。
直感的に捉えられる日は来るのだろうか。

参考:
【Java】Java8のあれこれ③ 関数型インターフェース(1) | Ardito Tech Blog

Ruby ハッシュのデフォルト値

ハッシュの存在しないキーのデフォルト値について。

exampleA = {}
p exampleA[:foo] # -> nil

exampleB = Array.new
p exampleB[:foo] # -> nil

exampleC = Array.new(0)
p exampleC[:foo] # -> 0

newした時の引数にデフォルト値を設定できる。
何もしなければnil
普通にexample = {}で宣言した時にデフォルト値を渡す方法はあるんだろうか・・・

参考:
Ruby on Rails チュートリアル:実例を使って Rails を学ぼう

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

参考:

http://tech.gmo-media.jp/post/42344727734/starting-rails-on-heroku-01
tech.gmo-media.jp