カテゴリー : 2013年 1月

パフォーマンス監視サービス「New Relic」の iPhone アプリが登場!

パフォーマンス監視サービス「New Relic」の iPhone アプリがリリースされたようです。

New Relic for iPhone はてなブックマーク - New Relic for iPhone

New Relic iPhone App

無料プランでしか使っていないのですが、手元で気軽に現在のパフォーマンスをチェックできるのは想像以上に便利ですね。

[Ruby] state_machine の国際化対応 (i18n)

state_machine の国際化対応 (i18n)の方法をメモ。

pluginaweek/state_machine · GitHub はてなブックマーク - pluginaweek/state_machine · GitHub

■ config/locales/model.ja.yml

ja:
  activerecord:
    state_machines:
      order:
        state:
          states:
            accepted: 注文受付
            firmed: 注文確定
            cancelled: 注文キャンセル
            delivered: 発送完了
          events:
            accept: 注文
            cancel: キャンセル
            deliver: 発送
    errors:
      models:
        order:
          attributes:
            state:
              invalid_transition: "%{value}状態では%{event}処理はできません。"

そんでもって、human_state_name で使う。

o.human_state_name
# => "発送完了"

【参考】

I18n documentation is missing · Issue #114 · pluginaweek/state_machine はてなブックマーク - I18n documentation is missing · Issue #114 · pluginaweek/state_machine

[Ruby on Rails] seed_fu を環境毎に分ける

Ruby on Rails で seed_fu のファイルを開発環境毎に分けてみました。

% ls -l db 
total 64
drwxr-xr-x  11 shigeoka  staff    374  1 29 20:10 fixtures/
drwxr-xr-x   3 shigeoka  staff    102 12 27 18:16 fixtures_development/
drwxr-xr-x   3 shigeoka  staff    102  1 30 18:07 fixtures_production/
drwxr-xr-x   3 shigeoka  staff    102  1 30 18:06 fixtures_staging/
drwxr-xr-x  76 shigeoka  staff   2584  1 29 20:10 migrate/
-rw-r--r--   1 shigeoka  staff  18269  1 29 20:10 schema.rb
-rw-r--r--   1 shigeoka  staff    343 12  4 23:32 seeds.rb

どの環境でも共通のデータは、普通に fixtures ディレクトリ以下に設置しています。

その他は、development, staging などでインポートしたいデータが微妙に違ってくるので、suffix に環境名を付けたディレクトリを作って分けました。

それぞれの環境のseedデータをインポートするには下記のように FIXTURE_PATH を指定してあげます。

% rake db:seed_fu FIXTURE_PATH=db/fixtures_development

そんでもって、development, stagingで共通のファイルは require で読み込むようにしています。

# db/fixtures_development/users.rb
require "#{Rails.root}/db/fixtures_staging/groups.rb"

こんな感じです。

[Ruby] 文字列中の半角・全角スペースを削除

Ruby で文字列中の半角・全角スペースを全て取り除くスニペットをご紹介します。

Ruby

続きを読む

[Git] CUI ツール「tig」のインストール手順

Git の CUI ツール「tig」を Mac でインストールする手順をメモ。

おなじみの homebrew でインストールする。

% brew install tig
==> Downloading http://jonas.nitro.dk/tig/releases/tig-1.1.tar.gz
######################################################################## 100.0%
==> ./configure --prefix=/usr/local/Cellar/tig/1.1 --sysconfdir=/usr/local/etc
==> make install
==> make install-doc-man
==> Caveats
Bash completion has been installed to:
  /usr/local/etc/bash_completion.d
/usr/local/Cellar/tig/1.1: 14 files, 476K, built in 8 seconds

tig のインストールを確認する。

% which tig
/usr/local/bin/tig

使い方はこの辺を読む。

Tig の表示方法あれこれ #git #AdventCalendar #tig – Qiita はてなブックマーク - Tig の表示方法あれこれ #git #AdventCalendar #tig - Qiita

tig blameが良い #tig #git – Qiita はてなブックマーク - tig blameが良い #tig #git - Qiita

CUI な Git ブラウザ tig を入れてみた – Born Too Late はてなブックマーク - CUI な Git ブラウザ tig を入れてみた - Born Too Late

ケータイ3キャリアに対応するためのDOCTYPE宣言と文字化け問題の解決方法

ケータイ3キャリアに対応するためのDOCTYPE宣言というか、メインは文字化け問題の解決方法です。

head タグ内に charset で文字コードを指定することで、文字化けが解決します。

■ html の場合

<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</head>

■ xhtml の場合

<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=Shift_JIS" />
</head>

ケータイ3キャリアに対応するためのDOCTYPE宣言について | ke-tai.org – インフィニットループ はてなブックマーク - ケータイ3キャリアに対応するためのDOCTYPE宣言について | ke-tai.org - インフィニットループ

3キャリア対応の携帯サイトをXHTMLで作る方法 | ウェブランサー はてなブックマーク - 3キャリア対応の携帯サイトをXHTMLで作る方法 | ウェブランサー

文字コード宣言は行いましょう(HTML) – Web標準普及プロジェクト はてなブックマーク - 文字コード宣言は行いましょう(HTML) - Web標準普及プロジェクト

[Sublime Text 2] Package Control: Install Packages できない問題の解決方法

Sublime Text 2 で Package Control: Install Packages できない問題にハマって、無事に解決できたのでメモ。

Sublime Text や PC の再起動をしてもダメだったので、設定ファイル全部消しました。

下記のコマンドを実行して、Sublime Text 2 の設定ファイルをまるっと消すだけでOKです。

% rm -rf ~/Library/Application\ Support/Sublime\ Text\ 2/

もちろん、設定とか全部消えちゃうので、個人用カスタマイズや Package のインストールもやり直しです。

[Sublime Text] Package Control (パッケージコントロール) の設定方法

Sublime Text 2 で Package Control を使うようにするための設定方法をメモ。

1. Ctrl + ` で下の方にコンソールが表示されるので、下記のコードをコンソールにコピペして、Enterを押すとインストールが開始される

import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print 'Please restart Sublime Text to finish installation'

2. 有効化するために Sublime Text を再起動する

3. Command + Shift + P で「Pacakge Controll」が Command Pallet に表示されていればインストール完了です

あとは、Package Control: Install Packages で色々パッケージをインストールしましょう。

[Mac] nkf を Homebrew でインストール

Mac に Homebrew で nkf をインストールしました。

% brew install nkf                     
==> Downloading http://dl.sourceforge.jp/nkf/53171/nkf-2.1.2.tar.gz
######################################################################## 100.0%
==> Patching
patching file Makefile
==> make
==> make install
/usr/local/Cellar/nkf/2.1.2: 4 files, 252K, built in 2 seconds

楽ちん

[Ruby on Rails] CSVインポート/エクスポート

Ruby on Rails で、CSVのインポート/エクスポート機能を実装する上での参考情報をご紹介します。

Ruby 1.9 は FasterCSV が標準の CSV クラスとして採用されているので、require “csv” すればすぐに使える。

FasterCSV Documentation

Class: CSV (Ruby 1.9.3)

CSVインポート/エクスポート実装サンプル

RailsCast

Ruby on Rails Screencasts – RailsCasts

CSVインポート

#396 Importing CSV and Excel – RailsCasts

roo というスプレッドシート(Open Office, Excel, Google Spreadsheetsなど)を操作する gem を使っている。

Empact/roo · GitHub

roo:スプレッドシートを操るRubyライブラリ « TORQUES LABS

CSVエクスポート

#362 Exporting CSV and Excel – RailsCasts

Ruby1.9とRailsでCSV出力(SJIS) #Rails #Ruby – Qiita

[rails] csvつくって出力するのよメモ | おれせか


CSVの文字コード変換

CSVファイルはExcelから作成されることが多くて、文字コードをShift_JISからUTF-8へ変換して扱う必要があります。

その辺のノウハウがまとめられています。

CSV を文字コード変換しつつロード #Ruby – Qiita

rails c で CSV ファイルをアップロードする

普通はテストで使う fixture_file_upload メソッドで CSV ファイルをアップロードしてから、モデルに追加したクラスメソッド import を呼び出してやります。

> include ActionDispatch::TestProcess
> file = fixture_file_upload "tmp/test.csv", "text/comma-separated-values"
 => #<Rack::Test::UploadedFile:0x007fa36b03f960 @content_type="text/comma-separated-values", @original_filename="test.csv", @tempfile=#<File:/var/folders/46/bg9j7wkn5qg9n895016mlvk00000gn/T/test.csv20130124-12060-h3mn08>> 
> Product.import(file)
   (0.2ms)  BEGIN
["a", "b", "c", "d"]
["1", "2", "3", "4"]
   (0.1ms)  COMMIT
 => <#CSV io_type:File io_path:"/var/folders/46/bg9j7wkn5qg9n895016mlvk00000gn/T/test.csv20130124-12060-h3mn08" encoding:UTF-8 lineno:2 col_sep:"," row_sep:"\r" quote_char:"\"">

参考情報