ドットインストールの「さくらのVPS入門」の手順通りに進めたらハマったのでメモ
CentOSのcronで定期作業を自動で行わせる
環境
さくらのVPS CentOS6
動機
railsアプリケーションを作ってて自動メンテに挑戦してみたいと思ったため。
毎度ながら素人の自分でもできる超簡単な方法を採ったので、たぶんもっとセキュアでいい方法はあると思う。
やったこと
Webアプリ側
自作のチャットアプリで1分毎に「test」と自動投稿させてみる。
rails側でこういうアクションを書く。
def create_test_comment Comment.create(content: 'test') end
ルーティングでアプリURL/testにアクセスすれば上のアクションが実行されるよう設定。
CentOS側
$ crontab -u [ユーザ名] -e
エディタが起動されるので、
*/1 * * * * curl http://example.com/test
と入力して保存。
あとは自動実行をわくわくして見守る。
うまくいってることを確認。
同じ要領で「テーブルのレコードが◯件を超えた分を削除」とか定期実行させられそう。
Bootstrapサイトをスマホ対応させる
勝手にいい感じにレスポンシブデザインにしてくれるという触れ込みのBootstrap。
でもなぜかスマホでPCレイアウト表示される時。
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
headタグの中にこいつを入れる。
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 = {}で宣言した時にデフォルト値を渡す方法はあるんだろうか・・・