クレジットカードの支払いが今月いくらなのかスクリプトで計算したかった人生だった

クレジットカードの請求額が高くてほんまかよこれ...ってなったので確かめたかったんだ。。 スクレイピングして値段だけ抽出して計算するだけ。あとあとから分割払いに変更していく感じの計算を自分でしたかったんだ。。 curlとか叩けないのでソースコードは…

nginxでドメイン間301リダイレクト

今までnginxのリダイレクトにはrewriteを使っていたのですが、どうやらこれはバッドプラクティスっぽいです。正解は、returnを使うようです。 以下が非常に参考になります。 hachibeechan.hateblo.jp 仮想サーバは分けましょう。 server { listen 80; server…

Reactで動的に生成したformでautofocus

Reactで、動的にformを生成した時に、そのformが生成された時にautofocusを当てたいという場面がありました。 以下を参考に。 reactjs - React set focus on input after render - Stack Overflow componentDidUpdateでObjectを指定してfocus()メソッドを使…

NginxでSSLの設定でredirect loopが起きる

以下の記事で解決策が。 リダイレクトループが起こり、上手くNGINXのセットアップが出来ない(修正) | Lunasysはうす 読んでいると、なるほど、CloudFlareにも触れられていたのでCDNも考慮しないといけないのか。 ということでリダイレクトのところで$http_x_…

nginxでURIによってSSL設定を振り分ける

Nginxをフロントに置いて、URIによってUnicornとphp-fpmにリクエストを振ってRailsアプリとWordpressを動かしているのですが、Wordpressの方をHTTPSでリクエストしたくないので、SSLはUnicornの方だけにしたいって感じのとき。 SSLの設定とサブディレクトリ…

AWSのEC2でeventmachineがgem installできない

長いことはまっちゃってましたが以下の記事で救われました。 stackoverflow.com 以下のコマンドで。 $ yum install gcc gcc-c++ native extensionをbuildするためにC++用のgccも必要だったみたいです。

AWSにitamaeで新しい環境を構築してデプロイする流れメモ

今回の記事は、AWSでEC2インスタンスを立ててitamaeのレシピを流す一連の流れのメモです。 手順 1. AWSのEC2インスタンスを起動 以下などを参考に。 qiita.com 2. ssh keyをローカルにもってきてconfigしとく HostNameで簡単にsshできるように設定しときます…

itamaeでディレクトリを作成するレシピ

/var/wwwとかにデプロイしたいときに、最初からディレクトリが作られててほしいです。 これもプロビジョニングの範囲内なのでitamaeでやりたい。 以下のようにするとディレクトリを作成することができましたー directory "create www dir" do action :create…

Vimで開いてるファイルをRubyMineで開く

Linuxコマンドが便利なので基本的に開発はシェルの中でvimを使ってるのだけど、ときどきRubyMineを使いたくなるときがある。 外部ライブラリのメソッド定義へジャンプするときとか、外部ライブラリのメソッド定義へジャンプするときとか。 以下でそのままRub…

同一モデル間の中間テーブルを作成する

同一モデルを含む中間テーブルを作成して、そこでhas_oneやhas_manyしたい状況がありました。 以下がとても参考になりました。 has_many :through の関連に同一モデルを含む場合【rails4】 | Coma's Tech Blog HABTMでforeign_keyとかclass_nameを駆使してみ…

ランダムな英数字の文字列を生成する

大文字と小文字を含めたランダムな英数字の文字列を生成したい。ということでメモ。 以下で大文字+小文字+数字な配列が得られます。多分かなりシンプルなスクリプトなはず。 > [('a'..'z'), ('A'..'Z'), (0..9)].map { |e| e.to_a }.flatten これを使って、…

swiftをREPLで 

REPLでswift使いたいなーと思い。調べてみると、どうやら標準でSwiftのREPLが実は用意されてるらしい。 Swiftのインタプリタモードが楽しい - Qiita lnで/usr/binにシンボリックリンク貼ろうかなと思ったら、File existsと言われたので実は最初からswiftコマ…

Ruby処理系をテストする

これからRailsとRubyをmaster, trunkにちゃんとアップデートして、差分を読んでいくみたいなことをしていきたいなぁと思って、どうせならテストを回せるようになりたいと思い。 RubyKaigi2015で発表されていた以下のスライドが非常に参考になります。ruby co…

railsコマンドでundefined method `register_preprocessor' for nil:NilClass (NoMethodError)になる

長らくしてなかったプロジェクトでbundle updateしたら、bin/rails sなどのrailsコマンドが動かなかった。エラーメッセージは以下のような感じに。 /Users/totz/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/less-rails-2.7.0/lib/less/rails/railtie.rb…

Rails 5.0.0-beta1が出た && API mode使ってみた

今朝、ついに出てましたーー Rails 5.0.0.beta1: Action Cable, API mode, Rails command, https://t.co/Q1Q85ciiNM – It's out! "gem install rails -v 5.0.0.beta1" and party!— DHH (@dhh) 2015, 12月 18 ということで、Release Notesは以下に。 Riding R…

deviseとmobyletteでNo renderer defined for format: mobileになる

mobyletteのmobileとのviewファイルの切り替え方法が、MIME typeを変えるという非常にワイルドな方法なために、deviseでのrespond_with()で mobile なんてフォーマットのrendererねえよって言われてしまう。 これは、Railsのrenderを担当してるControllerに…

Rails4系でのActionCableの使い方

Rails4でリアルタイムなチャットアプリを実装しながら、ActionCableの基本的な使い方をみていきたいなと思います。 完成形こんな感じ。 作ったサンプルアプリは、以下に置いております。 github.com 以下の記事を参考にさせていただきました。 Rails 5's Act…

Rubyばっか書いてる人のためのJavaScriptのオブジェクト指向世界入門

まずRubyでのオブジェクト指向と言語要素に慣れている場合はJavaScriptのオブジェクト指向でかなり違和感を覚えるような気がします。 JSは全てがオブジェクト (プロトタイプベース:後述) なんかRubyの言ってることと似ているが伝えたい意図が全く違う JSのオ…

個人用としてのIaaS/PasS比較

今使ってる個人用仮想サーバーがGMOのVPSで、結構前から使っててCentOSがめちゃくちゃ古かったり(5.5だったw)、そのプラン自体がそろそろなくなってしまうということだったり、寿司を送り合うコミュニケーションツールを作ってるのでせっかくそれをデプロイ…

Railsに絵文字の画像を追加する

gemojiを使って絵文字を追加する方法です。 https://github.com/github/gemoji まずはgemをbundle # Gemfile gem "gemoji" $ bundle installしたら、Rakefileに以下を加えます。 load "tasks/emoji.rake" そしたらおもむろにrakeタスク実行 $ bin/rake emoji…

MySQLが落ちる現象の原因を探る

/etc/mysql/my.cnfを見てlogファイルの場所を確かめる。 /log/mysql/log/error.logだったので、見てみる。エラーが出ている。 怪しそうなメッセージをかたっぱしからググってみる。 たどり着いたのはstack over flowの以下の質問。 mysql error The InnoDB m…

swap領域の設定の仕方

以下を参考にswap領域の設定を行ったのでメモしておきます。 https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04 使用するOSはubuntuです。 swap領域の確認 swap領域の確認の仕方で一般的なのは、swaponとfreeコマンドです…

ActiveSupportのメソッドを素のRubyスクリプトで使う

今回は、ActiveSupportのyesterdayメソッドを例にやってみます。 ActiveSupportのyesterdayメソッドは、名前空間全部含めると、ActiveSupport::CoreExtensions::Date::Calculations.yesterdayでした。 https://github.com/rails/rails/blob/master/activesup…

RailsでPCとスマフォのViewを切り分ける

スタイルシートは分けてマニフェストを書いているのですが、Viewファイルをスマフォ用に分けるかどうかは多分誰しも一度は悩んだことがあると思います。 Viewファイルを一緒にするメリットは 保守が楽になる: 機能追加などによるPC、スマフォ両方のUIの変更…

Websocket-railsはどう動くのか

なんか仕組み的な ざっくりだと、「クライアント側のJavaScriptと、サーバーサイドのevent.rbがイベントを送受信しあう」って感じ。 まずWebsocketについて 以下を読めばだいたいわかります。他の抽象的な理論ばかりでなくHTTPのヘッダの内容からもWebsocket…

mysqld dead but subsys locked

mysqlを起動させようとしたら、次のようなエラーが出てしまった。 $ sudo service mysqld start mysqld dead but subsys locked 前回は確かmysqlを再起動したら直った気がするけど、今回は直らなかった。 /var/log/mysql.logのERROR部分をみると、以下のよう…

ItamaeのレシピをVagrantに流し込んで環境構築

Itamaeを使ってVagrantの環境構築をするためのgemとして、vagrant-itamaeというものを作ってくださってるようなので、これを使います。 https://github.com/chiastolite/vagrant-itamae vagrantにpluginとしてインストールします。 $ vagrant plugin install…

モデルクラスのインスタンスメソッドで属性を書き換えるにはselfがいる?

探る過程 ARモデル内で、その属性を更新しようとして以下のようなメソッドを書くとする。 # app/models/user.rb class User < ActiveRecord::Base # ... def toggle_roll status = status == "active" ? "inactive" : "active" save! end end Userモデルのイ…

ActiveRecord::Base#reloadの使い方

ARインスタンスをデータベースから再取得する。 例えば別のリクエストで発生したプロセスがDBのカラムを変更したときに、インスタンスにはもちろん反映されない。 変更されたRDBの内容をインスタンスに反映させるのがこのActiveRecord::Base#reloadというわ…

nginxを使ったSSLの設定

参考 Rapid SSLの公式 (nginx) https://knowledge.rapidssl.com/support/ssl-certificate-support/index?page=content&actp=CROSSLINK&id=SO17664 nginx連載6回目: nginxの設定、その4 - TLS/SSLの設定 http://heartbeats.jp/hbblog/2012/06/nginx06.html お…