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

最近、herokuで稼働させているRailsのアプリが「Memory Quota Exceeded」と言われる事が多くなり、定期的にワーカーの再起動をしたいと思ってました。

見る限り、swapも出てしまい、レスポンスも遅くなっているようです。

このような場合、heroku以外だと、unicornを使うので、unicorn_worker_killerを入れるのですが

herokuだとpuma推薦なのでpuma使っていました。

で、pumaもun ...

Ruby

クリスマスプレゼントなのか

Ruby2.2 がリリースされてました。

Rails使いとしては

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

Ruby, Windows

今回の要件Windowsに複数のバージョンのRubyをインストールする。
バージョンの切り替えを出来るようにする。
ネイティブなgemもインストールしたい。
たとえばnokogiri とか jsonとか
ダウンロード

ということで、まずは必要なRubyのダウンロード。
以下のページからインストーラをダウンロードします。

※からもリンクがあります。

今回はシステム側に2.0.0、切り替え用として1.8.7をインストールします。 ...

Ruby on Rails 4, ubuntu

rvmを使って実行環境を分けつつ、crontabなどで自動起動をさせたい時

まずはrvmでラッパーを作成する

これを実行すると、~/.rvm/binにstart_unicorn_railsというファイルが出来上がる

このファイルに対してunicorn_railsに指定するパラメータを指定してやると

rvmを読み込んだ状態でunicorn_railsを実行してくれる。

Ruby on Rails 4

config/environments/production.rbファイルの中の

config.log_level

:debug

を設定します。

Ruby on Rails 4

Rails 3.x 以降でセッションのIDを得る方法が

session.session_idでは無くなったようです。

 

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

必要なパッケージをインストールする

たぶん、このインストールだけで済むはず。

入れている物は、
libqtwebkit-dev
qtwebkitの開発用モジュール
Qtはデスクトップと組込み開発向けのクロスプラットフォームアプリケーション開発フレームワーク
らしい
xvfb
仮想フレームバッファ
ttf-kochi-mincho-naga10 ttf-kochi-gothic-naga10
日本語フォン ...

Eclipse, git, Ruby on Rails メモ

Aptana Studio 3でEGitを入れているのに
Aptana Studio 3でインストールされるPortableGitが優先されてしまう問題

ですが

Preferencesの設定の中にある

という所が二つあると思います。

これは、Aptana Studio 3が内包しているPortable Gitの設定と、EGitの設定が両方出てきているという事です。

で、EGitの方を優先で使いた ...

Ruby

Rubyの配列をランダムにソートするには
a =
b =

(a + b).sort_by{rand}
#=>

Ruby

たまに、配列になっているデータをハッシュに変えてしまいたい時があったりします。

data = , , , , ]

という感じのデータですね。

これをハッシュにするには、ゴリゴリやる場合

hash_data = {}
data.map{|c| hash_data] = c}

となりますが、別のやり方として

Hashの「self ->Hash」というメソッドを使ってみます。

Rubyのドキュメントにもあ ...

Ruby, Ruby on Rails 3 Tips

ある程度コードを書いていると、使わなくなったメソッドや、新しいメソッドを作ったので使って欲しくないメソッドなどが多々出てくるかと思います。

コメントで書いておいても、使う人はいるし、既存コードで知らぬ間に使ってあったりもします。

そんな時は

depricatedをログに出力するようにしてしまいましょう。

そうすれば、その処理を通るたびにワーニングとしてdepricatedなメッセージが出力されるので

対処しやくすなります。 ...

Ruby, Scala

Rubyでは

.each_with_index |value, index|
p "#{index}番目は#{value}です"
end

というような書き方が出来ます。

これをScalaで書くにはどうするか。

val list = List("one", "two", "three")
list.zipWithIndex.fore

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が欲しい!

という時 ...

Ruby, ubuntu

Rubyは、リファレンス実装でC言語によるRuby(CRuby)や、Javaでの実装のJRuby、.NETのIronRubyなど、多くの実装があります。

これを一つ一つ環境構築してたら、大変なので

RVMというRubyの管理ツールをインストールしてみます。

これで出来る事は
Rubyのバージョンを切り替える
CRubyからJRubyに切り替える
gemのセットを作って切り替える

など

お手軽に入れるには、U ...

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 ...

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

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(&quo ...

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″
と追記して

Ruby, Ruby on Rails 3 Tips

UbuntuにRails3.2.8の実行環境を一からインストールしてみます。

Ubuntuは12.04を使用します。

まずは

Rubyから、と言いたい所ですが、必要パッケージ類から

MySQLをインストール
sudo apt-get install mysql-server mysql-client
続いて、RubyはUbuntuのパッケージで1.9.3と言うのがあるので、これを入れます。
sudo apt-ge ...