heroku, Ruby, Ruby on Rails 4, インフラ

最近、herokuで稼働させているRailsのアプリが「Memory Quota Exceeded」と言われる事が多くなり、定期的にワーカーの再起動をしたいと思ってました。 見る限り、swapも出てしまい、レスポンスも遅くなっているようです。 このような場合、heroku以外だと、unicornを使うので、unicorn_worker_killerを入れるのですが herokuだとpuma推薦なのでpuma使っていました。 で、pumaもuniconのようにworker killer系の物がある ...

Ruby

クリスマスプレゼントなのか Ruby2.2 がリリースされてました。 Rails使いとしては たとえば、新しい Ruby のガーベージコレクタは Symbol オブジェクトのガーベージコレクトができるようになりました。 2.2 以前の GC は Symbol オブジェクトのガーベージコレクトに対応していなかったため、この新しい GC によって Symbol オブジェクトについてのメモリ使用が削減されます。 Rails 5.0 ではこの Ruby 2.2 以降でのみサポートされる Symbol G ...

Ruby, Windows

今回の要件 Windowsに複数のバージョンのRubyをインストールする。 バージョンの切り替えを出来るようにする。 ネイティブなgemもインストールしたい。 たとえばnokogiri とか jsonとか ダウンロード ということで、まずは必要なRubyのダウンロード。 以下のページからインストーラをダウンロードします。 ※からもリンクがあります。 今回はシステム側に2.0.0、切り替え用として1.8.7をインストールします。 なので、ダウンロードページから 2.0.0のインストーラと1.8.7 ...

Ruby on Rails 4, ubuntu

rvmを使って実行環境を分けつつ、crontabなどで自動起動をさせたい時 まずはrvmでラッパーを作成する rvm wrapper 2.0.0@rails4.0 start unicorn_rails これを実行すると、~/.rvm/binにstart_unicorn_railsというファイルが出来上がる このファイルに対してunicorn_railsに指定するパラメータを指定してやると rvmを読み込んだ状態でunicorn_railsを実行してくれる。

Ruby on Rails 4

config/environments/production.rbファイルの中の config.log_level に :debug を設定します。 config.log_level = :debug

Ruby on Rails 4

Rails 3.x 以降でセッションのIDを得る方法が session.session_idでは無くなったようです。 request.session_options  

Ruby on Rails 4, Ruby on Rails メモ, ubuntu

必要なパッケージをインストールする たぶん、このインストールだけで済むはず。 sudo apt-get install libqtwebkit-dev xvfb ttf-kochi-mincho-naga10 ttf-kochi-gothic-naga10 入れている物は、 libqtwebkit-dev qtwebkitの開発用モジュール Qtはデスクトップと組込み開発向けのクロスプラットフォームアプリケーション開発フレームワーク らしい xvfb 仮想フレームバッファ ttf-kochi-m ...

Eclipse, git, Ruby on Rails メモ

Aptana Studio 3でEGitを入れているのに Aptana Studio 3でインストールされるPortableGitが優先されてしまう問題 ですが Preferencesの設定の中にある - という所が二つあると思います。 これは、Aptana Studio 3が内包しているPortable Gitの設定と、EGitの設定が両方出てきているという事です。 で、EGitの方を優先で使いたい場合ですが - のサブオプションがある方がEGitで、サブオプションがない方がPortableG ...

Ruby

Rubyの配列をランダムにソートするには a = b = (a + b).sort_by{rand} #=>

Ruby

たまに、配列になっているデータをハッシュに変えてしまいたい時があったりします。 data = , , , , ] という感じのデータですね。 これをハッシュにするには、ゴリゴリやる場合 hash_data = {} data.map{|c| hash_data] = c} となりますが、別のやり方として Hashの「self -> Hash」というメソッドを使ってみます。 Rubyのドキュメントにもあるのですが Hashの[]メソッドとして定義されており array_data = Hashという ...

Ruby, Ruby on Rails 3 Tips

ある程度コードを書いていると、使わなくなったメソッドや、新しいメソッドを作ったので使って欲しくないメソッドなどが多々出てくるかと思います。 コメントで書いておいても、使う人はいるし、既存コードで知らぬ間に使ってあったりもします。 そんな時は depricatedをログに出力するようにしてしまいましょう。 そうすれば、その処理を通るたびにワーニングとしてdepricatedなメッセージが出力されるので 対処しやくすなります。 書き方としては、 def old_method warn " ...

Ruby, Scala

Rubyでは .each_with_index |value, index| p "#{index}番目は#{value}です" end というような書き方が出来ます。 これをScalaで書くにはどうするか。 val list = List("one", "two", "three") list.zipWithIndex.foreach{ case(value, index) => println(" ...

Ruby on Rails 3 Tips

RailsからMySQLのテーブルを作成するには Railsのマイグレート機能には、カラム属性としてbinaryがあるのですが、これを指定してもMySQL上ではBLOBというカラム属性になります。 構文としては create_table :user_photos do |t|   t.string :name   t.binary :photo_image end もっと大容量のLONGBLOBが欲しい! という時にはbinaryの所にオプションで:limit => 16.megabyte ...

Ruby, ubuntu

Rubyは、リファレンス実装でC言語によるRuby(CRuby)や、Javaでの実装のJRuby、.NETのIronRubyなど、多くの実装があります。 これを一つ一つ環境構築してたら、大変なので RVMというRubyの管理ツールをインストールしてみます。 これで出来る事は Rubyのバージョンを切り替える CRubyからJRubyに切り替える gemのセットを作って切り替える など お手軽に入れるには、Ubuntuなどのユーザ領域にRVMをインストールする ということで、インストールして見ます ...

Ruby on Rails 3 Tips

scope :active, where('deleted_at is null') というスコープを設定したとして この条件を含むSQLをコード内で取得したい場合ってありますよね。 SQL書いてでゴニョゴニョしたい場合とか…。 そんな時には Article.active.to_sql としてやれば、 select * from articles where deleted_at is null というSQLが取得出来ます。 参考例 # === タグ class Tag < Act ...

Ruby on Rails メモ

Ruby on Railsで数値を整形する場合、ActionViewには便利なヘルパーがあります。 number_with_delimiter です。 number_with_delimiter(12345678) # => 12,345,678 number_with_delimiter("123456") # => 123,456 number_with_delimiter(12345678.05) # => 12,345,678.05 number_w ...

Ruby on Rails 3 Tips

class ActiveForm include ActiveModel::Conversion extend ActiveModel::Naming include ActiveModel::Validations def persisted?; false; end def initialize(attributes = {}) attributes.each do |name, value| send("#{name}=", value) rescue nil end ...

Ruby, Ruby on Rails 3 Tips

sql = " SELECT * FROM users WHERE created_at >= '#{2.weeks.ago}' ORDER BY created_at DESC " @users = User.paginate_by_sql(sql, :page => params, :per_page => 20) こんな感じ

Ruby on Rails 3 Tips, Ruby on Rails 3 プラグイン

Rails 2.x系で、論理削除と言ったら、もうこれ!というのが acts_as_paranoid でした。 Rails 3.x系では rails3_acts_as_paranoid を使います。 インストールの方法は GemFileに gem "rails3_acts_as_paranoid", "~>0.2.0" と追記して bundle実行 ※Rails3.1の場合は、GemFileに書くプラグインのバージョンが"~>0.1.4"になります。 ※Rails3.0の場合は、Gem ...

Ruby, Ruby on Rails 3 Tips

UbuntuにRails3.2.8の実行環境を一からインストールしてみます。 Ubuntuは12.04を使用します。 まずは Rubyから、と言いたい所ですが、必要パッケージ類から sudo apt-get install make build-essential libssl-dev zlib1g-dev \ apache2-mpm-prefork apache2-prefork-dev libapr1-dev libaprutil1-dev \ libcurl4-openssl-dev li ...