Play Framework で、SQLの実行ログもログに出力させたい場合
Play Frameworkはなんか、デフォルトで正常に動いていると、ログが少ないなと思ったりします。 正常に動いたように見えても、データがおかしいのを拾っている場合もあります。 そんな時は、どんなSQLが叩かれているのかと言うのを見たくなります。 Ruby on Railsでは、developmentモードで起動していると常にSQLの実行ログが出たりしますが Play Frameworkでは設定を追加しないと駄目なようです。 設定は application.conf に db関係の設定があると ...
Play Framework 2.0.2 で負荷をかけるとエラーが出まくる
これは、Play Framework で使用しているAkkaのデフォルト設定による物で、ボディパーサのタイムアウトが1秒に設定されています。 retrieveBodyParserTimeout = 1 second なので、負荷をかけていって、一つのリクエストが1秒を超えたあたりでタイムアウトのエラーが発生してしまいます。 そこで、Akkaの設定を追加してあげれば良いのですが、どこに追加したら良いかというと 決まりは無い感じですが confの中にあるapplication.confとか akka ...
ScalaのArrayなどで、Rubyのeach_with_indexのようなインデックス付きイテレーションを使う
Rubyでは .each_with_index |value, index| p "#{index}番目は#{value}です" end というような書き方が出来ます。 これをScalaで書くにはどうするか。 val list = List("one", "two", "three") list.zipWithIndex.foreach{ case(value, index) => println(" ...
RailsからMySQLのテーブルを作成する時にLONGBLOBなカラムを作成する方法
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 ...
Scalaの複数バージョンを切り替えられるsvm
Rubyにはrvmがある。 Scalaにはsvmがある。 ということで、svmを入れてみたいと思います。 ここから、cloneかzipファイルをダウンロードします。 展開した所にsvmがあると思うので、ここにパスを通します。 Ubuntuだと~/.profileの最後に export PATH=$PATH:~/svm もう一つ、 export SCALA_HOME=~/.svm/current/rt とかやればOKです。 で、svmと叩いて、ヘルプが出力されれば完了です。 続いて、Scalaのイ ...
UbuntuにRhodeCodeを入れてGitリポジトリを公開する
RhodeCodeというのは、 Githubのような雰囲気のソース共有サーバを構築するオープンソースです。 Githubでやりたい事を、Githubではなく、ローカルで実現したい、といった場合に適していると思います。 リポジトリをフォークしたり、ソースレビューをしたりetc と言うことで、 RhodeCodeをインストールして見ます。 RhodeCodeはPython製なので、Pythonをインストールします。 sudo apt-get install python-dev python-set ...
svnのリポジトリを全部gitに移行する
svnのリポジトリをgitで扱う方法として svn gitというコマンドツールがある 今回はgitをリモートリポジトリにする方法は別途解説するとして このコマンドを使用して、svnリポジトリをgitに移行してみます。 まずは、gitリポジトリをイニシャライズします。 イニシャライズ時に、リモートリポジトリにする前提で移行するので--bareオプションを付けます。 これは、my_prodディレクトリにソースを展開せずに管理情報だけを保持するリポジトリにするオプションです。 git init --b ...
Ubuntu 12でgitoliteを使ってgitリポジトリを公開する
公開リポジトリを作成するまで gitのインストール sudo apt-get install git gitoliteのインストール sudo apt-get install gitolite gitolite用アカウントの作成 sudo adduser --disabled-password gitolite 管理者用として公開鍵を作成 ssh-keygen -t rsa gitoliteアカウントのホームに転送 sudo cp .ssh/id_rsa.pub /home/gitolite/a ...
RVMをセットアップする
Rubyは、リファレンス実装でC言語によるRuby(CRuby)や、Javaでの実装のJRuby、.NETのIronRubyなど、多くの実装があります。 これを一つ一つ環境構築してたら、大変なので RVMというRubyの管理ツールをインストールしてみます。 これで出来る事は Rubyのバージョンを切り替える CRubyからJRubyに切り替える gemのセットを作って切り替える など お手軽に入れるには、Ubuntuなどのユーザ領域にRVMをインストールする ということで、インストールして見ます ...
gitoliteからcloneする
gitoliteからリポジトリをクローンするには Linux系の場合 ssh-keygen -t rsa でキーを作成する id_rsa.pubを適当な名前でコピーする 例)gendosu-ubuntu.pub gitoliteのサーバにsftpなどで送り込んで gitolite-admin/keydirに格納する gitolite-adminリポジトリをコミットして、プッシュ これで、gitoliteへ公開鍵を設定完了 ssh gitolite@サーバ名 とやると、gitoliteがメッセージ ...
ActiveRecordのscopeで作成した条件などをSQLとして出力する
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 ...
svnのリポジトリからgit cloneするには
たとえば、svnのリポジトリをgitで扱いたい場合、 git svn clone とやれば、svnのリポジトリをgitとして扱うことが出来ます。 gitでtagやbranchなども使ってsvnリポジトリを扱いたい場合 git svn clone -s とすれば、ブランチやタグの情報も取得出来るようになります。 ただし、 という構成になっていないと よろしくやってくれないようです。 通常と違う構成でsvnを使っている場合、-sオプションでは無く git svn clone --trunk=<tru ...
gitのlogで、日付が9時間ずれている場合の対処
git log コマンドで コミットの日付が Date: Tue Nov 27 06:21:17 2012 +0000 なんて感じで、9時間ずれるような時は git log --date=local とオプションを付ければ、 Date: Tue Nov 27 15:21:17 2012 と、ちゃんと表示される
number_with_delimiter (数値をカンマ区切りで出力)
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 ...
DBとは関係ないフォームの項目をバリデートする
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 ...
will_paginateでSQLを直接実行した結果をwill_paginate対応にする
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) こんな感じ
Rails 3 用のacts_as_paranoid
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 ...
Rails 3.2.8をUbuntuに一からインストールしてみる
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 ...
Rails 3 の環境でstylesheetにlessを使う
Rails 3.2では、javascriptやstylesheetはassetにまとめられます。 ここにまとめられたものは 例えばstylesheetであれば自動的に「コントローラ名.css.scss」がcssコンパイルされ、 リンクされます。自分で指定する場合は <%= stylesheet_link_tag "users" %> とすればリンク出来ます。 さて、Rails3.2では、stylesheetはscssが、JavaScriptはCoffeScriptがそれぞれ 標準で使 ...
Rubyで$amp;などの文字参照をデコードする
Rubyで「&」などの文字参照をデコードするには CGI.unescapeHTML('test&リリース') とすると test&リリース という感じで変換してくれる。