2012-01-01から1年間の記事一覧
今年も行ってきた! フジファブリック → B-DASH → 高橋優 → マキシマムザホルモン → サカナクション → plenty → SHAKALABBITS ほんの12時間前に「今年も来たぜキャッホー!」ってなってたのに、凄く遠い昔のことに感じる。うん、今年もとても楽しかった。 フ…
rakeタスクでつまれてるミドルウェアを確認する。 $ rake middleware use ActionDispatch::Static use Rack::Lock use #<ActiveSupport::Cache::Strategy::LocalCache::Middleware:0x007fed13d07bb0> use Rack::Runtime use Rack::MethodOverride use ActionDispatch::RequestId use Rails::Rack::Logger use ActionDispatch::ShowExcep</activesupport::cache::strategy::localcache::middleware:0x007fed13d07bb0>…
タグの情報を見るなら $ git show タグ名 そのタグをチェックアウトするなら $ git checkout タグ名 そのタグからブランチを切る(そしてチェックアウトする)なら $ git branch ブランチ名 タグ名 $ git checkout ブランチ名 もしくは $ git checkout -B ブ…
ソースを見るとトランザクションを開始してからロックしてくれるので、別途transactionを呼ぶ必要はない。 # File activerecord/lib/active_record/locking/pessimistic.rb, line 69 def with_lock(lock = true) transaction do lock!(lock) yield end end …
describeやcontext間で共通する処理をメソッドにするとスッキリするんだけど、それをspecファイルをまたいで共有したいときに。 module RSpec module Core module MyHelper # 適当に名付ける module ExampleGroupMethods def my_let(*args) p args let(*args…
ロックがわからない。MySQL InnoDBの行レベルロックを読んだけど、イマイチわからない。というわけで、社内の勉強会で知ったことをまとめてみる。 FOR UPDATEかLOCK IN SHARE MODEによって、そのトランザクション中に走る別画面でのクエリの処理のタイミング…
よく忘れるのでメモ。 Kernel.rand(n)は、nが整数値の場合には0..(n-1)の範囲の整数をランダムで返す。 つまり、rand(2)とやっても返ってくるのは0もしくは1のどちらかのみで、2が返ってくることはない。
12/5のNHKホールに行ってきた。 というわけでこの本文を書いているのは年を跨いで2013年の1月3日の深夜28時。 あの日(12/5)のことは今もしっかり覚えているけども、情景の描写は完結に抑えておいて(全部書こうとすると、当日の帰り道に自分宛に送った長文…
ActiveRecordのserializeはYAMLにしか対応していないけど、serialize-railsを使うとJSONやXML、RubyのMarshalも保存できるようになる。 # Gemfile source 'http://rubygems.org' gem 'rails', '3.2.9' # 3.0.0 以上が必要 gem 'serialize-rails' # app/model…
class Klass @iv = 1 @@cv = 2 def self.iv; @iv end def self.cv; @@cv end def iv; @iv end def cv; @@cv end end class SubKlass < Klass end # クラスのインスタンス変数を参照してみる Klass.iv #=> 1 SubKlass.iv #=> nil Klass.new.iv #=> nil SubKla…
12/1にリリースされてたので入れた。 基本的にはruby 2.0.0-preview1と導入方法は同じで、ruby-installを更新したあとでインストール。 ちなみに環境はOS X 10.8.2 Mountain Lion。 $ cd ~/.rbenv/plugins/ruby-build $ git pull origin master $ CONFIGURE_…
最近知ったGoose houseという音楽ユニットの演奏がとても好きで、今日は一日中この人たちの歌を聴きながら作業していた。 恋におちたら/Crystal kay(Cover 主にカバーをやってるんだけど、アコースティックな感じがとても好き。超メジャー曲から、これ歌っ…
不完全ながらメモ。 雛形を作る $ bundler gem hello こうするとhelloディレクトリが作られて、その中にひな形のファイル(hello.gemspecとかlibとかが作られる)。 hello.gemspecを変更する TODOと書かれているgem.description、gem.summaryは変更しないとr…
chiliはchankoのようなもの。 chankoは、大規模レガシープロダクトをレガシーコードのままベータ機能をサービス壊さずにぶっこむのに特化してるけど、ある程度ダーティさがある。chiliは、新規サービスにRails的な思想を守ったまま綺麗にベータ機能を追加す…
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と…
まず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エンジン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を使うと次のルーティングに処理が引き渡される。 どのルーティングにマッチするかにはPATH_INFOが使われている*1ので、passする前にこれを書き換えることで全く別の…
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を導入してみた。 ヘルプを見ると現状下記サービスに対応しているとのこと。 Ameblo Blogger(動的テンプレートを除く) FC2ブログ はてなブログ(はてなダイアリーは非対応) Livedoor blog ヤプログ! 独自ブログ/CMS(サブディレクトリでの運…
正規表現を使ってURLリダイレクトを行うにはRedirectMatchを使う。 RedirectMatch permanent /(archive/.+) http://archive.aerial.st/$1 ちなみにRedirectMatchはVirtualHostディレクティブにも書ける。 参考 mod_alias
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…
前回のログをさかのぼってみたらreadlineまわりでもエラーが起きていた。 なので、readlineも入れなおしてやってみたところ上手くいった。 ちなみにOS X 10.8.2 Mountain Lion。 $ brew upgrade readline $ brew link readline $ brew upgrade openssl $ bre…
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-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のプラグインとしてインストールしている場合、 $ cd ~/.rbenv/plugins/ruby-build $ git pull $ rbenv rehash Homebrewで入れている場合、 $ brew upgrade ruby-build ただしこちらは更新が遅いので、横着してHomebrewで入れるよりもrbenvのプラグイン…
$ cd $(dirname `gem which active_record`)
$ grep hoge **/* とかしたときにディレクトリがヒットするとIs a directoryといちいちエラーが表示されて煩わしかったので、 alias grep='grep -s' というようにエラーを非表示にするオプション-sを設定した。
レシーバと引数で与えられた配列を、レシーバの要素数個の配列に分割する。 (複数の配列の要素を、そのインデックスごとに取り分けた配列を作る、のほうが的確?) a = [1, 2, 3] b = [4, 5, 6] c = [7, 8, 9] a.zip #=> [[1], [2], [3]] a.zip(b) #=> [[1,…
偶数個の引数からハッシュを作る。 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] #=> {} 最後の一つだけよくわからないなぁ…