例えば foo.rbというRubyスクリプトの実行時間をシェル上で知りたかったらtime foo.rbとすればいいわけですが、残念ながらirb上ではtimeコマンドをそのまま使うことができません。 解決策 標準で用意されているBenchmarkライブラリを使えばOK. irb(main)> require 'benchmark' irb(main)> puts Benchmark.measure { "a"*1_000_000_000 } 0.350000 0.400000 0.750000 ( 0.835234) こんな感じで表示されます。 0.750000がCPUを使った時間で0.835234が実際にかかった時間。 気にしないといけないのはCPUを実際に使ってたじかんなので前者のほうになります。 ちなみに自分の環境だと裏で動画のエンコードを走らせながらVirtualBox上のOSでやってたのでCPU使用時間の50倍ぐらい実際にかかってしまってました。 参考 [Module: Benchmark (Ruby 2.1.1)][1] [When benchmarking, what causes a lag between CPU time and “elapsed real time”? – Stack Overflow][2]

続きを読む

RailsでPostgresqlを使うときに毎回そのためのユーザーの作成方法を忘れてしまうのでメモ。 まずユーザーを作成 WindowsでChocolateyを使ってpostgresqlをインストールしてると初期パスワードはPostgres1234になってるので、 $ psql.exe -U postgres ユーザ postgres のパスワード: ←ここでパスワードを入力 psql (9.2.1) "help" でヘルプを表示します. postgres=# create user deployer; CREATE ROLE postgres=# alter user deployer with superuser; ALTER ROLE これでパスワード無しのdeployerユーザーが必要な権限付きで作成される。 ※ Linux系のOSならsudo -u postgres psqlでpsqlコマンドを使いましょう。 パスワード無しユーザーでもOKにする これだけだとfe_sendauth: no password suppliedというエラーが出てしまうので C:\PostgreSQL\data\pg_hba.confを開いて # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5 を # IPv4 local connections: host all all 127.0.0.1/32 trust # IPv6 local connections: host all all ::1/128 trust に書き換える。

続きを読む

twitter-bootstrap-railsを普通にWindowsで使おうとするとlibv8がないからアカンで~的なエラーが出てきてインストールに失敗します。 対策 特定のバージョンはインストールできるのでそれをインストールしましょう。 gem install libv8 --version 3.11.8.0 あとはGemfileにgem 'therubyracer', platforms: :rubyのコメントアウトを外してgem twitter-bottstrap-railsを追加すれば万事OK! 追記、より良い解決策 そもそもbootstrap-sassを使えばよいのでは?

続きを読む

RailsのDBからGETでデータの呼び出しはできるけど、PUTで値の追加ができなくてこんなエラーに成った時の対処法 Completed 422 Unprocessable Entity in 126ms ActionController::InvalidAuthenticityToken - ActionController::InvalidAuthenticityToken: 原因 CSRF対策です。 ダメな対策 モデルにこれを追加 skip_before_filter :verify_authenticity_token サイバーノーガード戦法です。おすすめしません。 良さそうな対策 gem の<a href="https://github.com/xrd/ng-rails-csrf">ns-csrf-rails</a>を使う。わからないことは全部gemにまかせてしまいましょう。

続きを読む

文字幅をしるために全角=2,半角=1で文字サイズが取得したかったので やり方 "日本語とEnglish".each_char.map{|c| c.ascii_only? ? 1 : 2}.inject(:+) Rubyばんざーーい! 参考 [2013/02/20/Rubyで全半角混在文字の文字幅を計算する方法 – ヽ(´・肉・`)ノログ][1]

続きを読む

db/seeds.rbにUser.createでencrypted_passwordを与えてDeviseのユーザーを作ろうとしたら失敗した。 原因 passwordが存在しないためにvalidationに引っかかってしまってる。 対策 passwordを平文で打てば解決するらしいけど、平文のパスワードは使いたくないのでバリデーションの方を無効化してしまいましょう。 User.new(email: someone@example.com).save(validate: false) でOKです。encrypted_passwordの取得方法は色々あるでしょうが、自分の場合は一度Deviseで作ってからそれをrails console使ってUser.first.encrypted_passwordを取ってきました。 参考 [Cannot create Devise account using rake db:seed for Rails 3.0 – Stack Overflow][1]

続きを読む

/usr/bin/env: ruby.exe: そのようなファイルやディレクトリはありません というエラーがwheneverで作ったcronのログとして出てきて困ってた。 bin/railsの実行権限とか/usr/bin/env ruby --version でちゃんとrubyが動いてるかどうか確認したりとか色々。 答え Windowsで作ったRailsプロジェクトだったので ruby<strong>.exe</strong>になってた。なんてことだ…。 解決策 bin/railsの一行目usr/bin/env ruby.exeの.exeを削除しておきましょう。ふぁっく。

続きを読む

rubyは文字列の配列を作るときに["foo", "bar"] と書くのがめんどくさいからという理由で %w(foo bar) みたいな感じで書けちゃいます。 同じような感じでsymbolもかけないかと思って探してたらruby 2.0.0から%iが使えるようになったので %i(foo bar) で [:foo, :bar] が書けちゃいます。ステキ! 参考 [ruby – Is there way to create a symbol's array like string with %w? – Stack Overflow][1]

続きを読む

プロフィール画像

ironsand

語学好きのプログラマーです

Railsエンジニア

Yokohama