There's an echo in my head

日々のメモ。

2012-11-01から1ヶ月間の記事一覧

Railsアプリケーションにサブ機能を追加するchili

chiliはchankoのようなもの。 chankoは、大規模レガシープロダクトをレガシーコードのままベータ機能をサービス壊さずにぶっこむのに特化してるけど、ある程度ダーティさがある。chiliは、新規サービスにRails的な思想を守ったまま綺麗にベータ機能を追加す…

git current-branchで現在のブランチ名を返す

git

aliasを使う。 # ~/.gitconfig [alias] current-branch = "!$SHELL -c 'git branch &> /dev/null | grep \"^\\*\" | cut -b 3-' __dummy__" これでcurrent-branchサブコマンドが使えるようになる。 $ git current-branch master さらにcb = current-branchと…

Ruby 2.0.0-preview1でRails 4(HEAD)を入れる

まずBundlerが1.2.2以上でないとエラーが出るので更新しておく。 $ gem install bundler $ rbenv rehash $ bundle -v Bundler version 1.2.2 RailsのHEADはGemfileでgitリポジトリを直接指定することでインストールできる。 $ mkdir edge_rails $ cd edge_ra…

GitHubのWikiにサイドバーを作る

GitHubの採用しているWikiエンジンgollumの機能を使うと、プロジェクトのWikiにサイドバーを設定することができる。 $ git clone git@github.com:foo/bar.wiki.git $ cd bar.wiki $ vim _Sidebar.md $ git add _Sidebar.md $ git push origin master 自分で…

Sinatraのpassで処理を別のルーティングに引き渡す

Sinatraで複数のルーティングにマッチすると先に宣言されたほうで処理が行われるけど、passを使うと次のルーティングに処理が引き渡される。 どのルーティングにマッチするかにはPATH_INFOが使われている*1ので、passする前にこれを書き換えることで全く別の…

MySQLの整数値の幅

5.5のリファレンスのNumeric Typesより type bytes min max TINYINT 1 -128 127 TINYINT UNSIGNED 1 0 255 SMALLINT 2 -32,768 32,767 SMALLINT UNSIGNED 2 0 65,535 MEDIUMINT 3 -8,388,608 8,388,607 MEDIUMINT UNSIGNED 3 0 16,777,215 INT 4 -2,147,483,…

MessageLeafを導入してみた。

MessageLeafを導入してみた。 ヘルプを見ると現状下記サービスに対応しているとのこと。 Ameblo Blogger(動的テンプレートを除く) FC2ブログ はてなブログ(はてなダイアリーは非対応) Livedoor blog ヤプログ! 独自ブログ/CMS(サブディレクトリでの運…

ApacheでRedirectMatch

正規表現を使ってURLリダイレクトを行うにはRedirectMatchを使う。 RedirectMatch permanent /(archive/.+) http://archive.aerial.st/$1 ちなみにRedirectMatchはVirtualHostディレクティブにも書ける。 参考 mod_alias

Object#instance_execでブロック引数を省略する

def configure(&block) @config ||= Configuration.new block.call(@config) end configure do |config| config.use :yaml end みたいなのが、Object#instance_execを使うとスッキリ書ける。 def configure(&block) @config ||= Configuration.new @config.i…

ruby 2.0.0-preview1を入れてみる(成功)

前回のログをさかのぼってみたらreadlineまわりでもエラーが起きていた。 なので、readlineも入れなおしてやってみたところ上手くいった。 ちなみにOS X 10.8.2 Mountain Lion。 $ brew upgrade readline $ brew link readline $ brew upgrade openssl $ bre…

has_one, has_many, belongs_toでconditionsを動的にする

Rails has_many with dynamic conditionsより、ActiveRecord 3.1+ではprocを使う必要があるみたい。3.2.8で確認済み。 class User has_many :pictures has_one :profile_picture, class_name: "Picture", foreign_key: "user_id", conditions: proc { ["id =…

ruby 2.0.0-preview1を入れてみる(失敗中)

ruby-installの一覧を更新したあとで、rbenvで2.0.0を入れたらopensslがrequireできない を見ながらチャレンジ。 $ brew upgrade openssl Error: openssl-1.0.1c already installed $ CONFIGURE_OPTS=--with-openssl-dir=`brew --prefix openssl` rbenv inst…

rbenv install(ruby-build)の一覧の更新

rbenvのプラグインとしてインストールしている場合、 $ cd ~/.rbenv/plugins/ruby-build $ git pull $ rbenv rehash Homebrewで入れている場合、 $ brew upgrade ruby-build ただしこちらは更新が遅いので、横着してHomebrewで入れるよりもrbenvのプラグイン…

gemのディレクトリに移動する

$ cd $(dirname `gem which active_record`)

grep -s

$ grep hoge **/* とかしたときにディレクトリがヒットするとIs a directoryといちいちエラーが表示されて煩わしかったので、 alias grep='grep -s' というようにエラーを非表示にするオプション-sを設定した。

Enumerable#zipってなんぞ

レシーバと引数で与えられた配列を、レシーバの要素数個の配列に分割する。 (複数の配列の要素を、そのインデックスごとに取り分けた配列を作る、のほうが的確?) a = [1, 2, 3] b = [4, 5, 6] c = [7, 8, 9] a.zip #=> [[1], [2], [3]] a.zip(b) #=> [[1,…

Hash[]ってなんぞ

偶数個の引数からハッシュを作る。 Hash[] #=> [] Hash[1] #=> ArgumentError: odd number of arguments for Hash Hash[1,2] #=> { 1 => 2 } Hash[1,2,3,4] #=> { 1 => 2, 3 => 4 } array = [1,2,3,4] Hash[array] #=> {} 最後の一つだけよくわからないなぁ…

schema_plusで外部キー制約をかける

schema_plusを使うとcreate_tableやadd_columnでカラムを定義するときに:referencesオプションにテーブル名を渡すだけで、外部キー制約を手軽にかけることができる。 create_table :posts do |t| t.integer :category_id, references: :categories end 個々…

このブログに出てくるコードスニペッツは、引用あるいは断りがない限りMITライセンスです。