タグ

ブックマーク / maeshima.hateblo.jp (164)

  • メタプログラミングRuby 第3章 - maeshimaの日記

    ブロックは定義された場所の束縛を保持する。 束縛とはローカル変数、インスタンス変数、selfなどの情報のこと スコープゲートは module class def class を Class.new {} にしたり、def を define_method {} にしたりすることでスコープをフラットにすることができる JavaやC#といった言語には、「内部スコープ」から「外部スコープ」の変数を参照できる仕組みもあるが、Rubyにはこうした可視性の入れ子構造は存在せず、スコープはきちんと区別されている。 どこでも使えてしまうグローバル変数の代わりに、トップレベルでのみ使えるmainオブジェクトのインスタンス変数を使うやり方がある。設定を格納しておくときに使えるかな? ブロックからProcにするのも、procからブロックにするにも & を使う 「define_methodではブロックを引数に持つメ

    メタプログラミングRuby 第3章 - maeshimaの日記
    willnet
    willnet 2012/06/13
    ブロックローカル変数使っていきたい/instance_execもわすれてた
  • migration中に変更したカラムを使いたい場合 - maeshimaの日記

    ActiveRecord::Base#reset_column_informationを実行して、カラムの情報を一度リセットしないとエラーになってしまう。下記のソースはrailsのドキュメントからの引用。 class CreateJobLevels < ActiveRecord::Migration def self.up create_table :job_levels do |t| t.integer :id t.string :name t.timestamps end JobLevel.reset_column_information %w{assistant executive manager director}.each do |type| JobLevel.create(:name => type) end end def self.down drop_table :job_

    migration中に変更したカラムを使いたい場合 - maeshimaの日記
    willnet
    willnet 2012/04/02
    復習用セルクマ/完全に忘れてた
  • yasnippetのコマンドとファイルの内容 - maeshimaの日記

    yas/new-snippet 新しいsnippetの登録。今居るbufferからsnippetを保存するのに適切なディレクトリを選択してくれて、snippet-modeで新しいファイルを開く。 yas/find-snippets 定義用のディレクトリを開く yas/visit-snippet-file 今居るバッファから定義を選択して定義ファイルを開く yas/load-snippet-buffer 編集したsnippet-modeをファイルに保存する。デフォルトでC-c C-cに割り当てられている yas/tryout-snippet 新しいバッファを開いて編集したsnippetを貼り付ける。編集したバッファのテスト用。デフォルトでC-c C-tに割り当てられている。 snippetファイルの内容 key スニペットを展開する前に入力する省略形を書く。このディレクティブを指定しない場合

    yasnippetのコマンドとファイルの内容 - maeshimaの日記
    willnet
    willnet 2012/03/27
    復習用セルクマ/conditionは今後使っていきたい
  • メタプログラミングRuby 4章 - maeshimaの日記

    カレントクラス カレントクラスはカレントオブジェクト(self)とは別。Rubyのプログラムは常にカレントオブジェクトとカレントクラスを持っている。メソッドを定義したときに、そのメソッドはカレントクラスのインスタンスメソッドになる。 class MyClass def method_one def method_two; 'Hello!'; end end end method_two が定義されたときのカレントクラスは self のクラスである MyClass class_eval と instance_eval の違い class_eval は、self とカレントクラスをレシーバにする。 instance_eval は、self をレシーバにし、カレントクラスをレシーバの特異クラスにする。 class_eval と class ... end の違い class は定数が必要だけど、

    メタプログラミングRuby 4章 - maeshimaの日記
    willnet
    willnet 2012/01/24
    class_eval は、self とカレントクラスをレシーバにする。 instance_eval は、self をレシーバにし、カレントクラスをレシーバの特異クラスにする。
  • 可塑性 - maeshimaの日記

    かそせい。読めなかったのでメモ。意味は 固体に外力を加えて変形させ、力を取り去ってももとに戻らない性質。塑性。

    可塑性 - maeshimaの日記
    willnet
    willnet 2011/11/03
    復習用セルクマ
  • isearchでカーソル位置の単語を検索する - maeshimaの日記

    isearch時に C-w とするとカーソル位置にある一単語を検索ワードにセットできる。

    isearchでカーソル位置の単語を検索する - maeshimaの日記
    willnet
    willnet 2011/09/12
    復習用セルクマ/忘れてた
  • sunspot_rails - maeshimaの日記

    sunspot_rails/README.rdoc at master from outoftime/sunspot - GitHubの意訳。 Sunspot::Rails は Sunspot の Solr 検索を Rails に統合するためのプラグイン。下記のような機能を提供する。 config/sunspot.yml で sunspot の設定が出来る ActiveRecord を拡張してインデックスの作成/設定と検索とを楽にする ActiveRecordのオブジェクトが保存されたときや削除されたときに自動でインデックスも作成/削除される(機能をオフにすることも出来る) 自動で各リクエストの最後に Solr の変更をコミットする(機能をオフにすることも出来る) 孤立したドキュメントを探して直してインデックスを再構築するメソッドを提供 Solr インスタンスを sunspot.yml の

    sunspot_rails - maeshimaの日記
    willnet
    willnet 2011/08/18
    Sunspot と一緒にパッケージされている Solr インスタンスは開発用であり、production では推奨されない
  • workとjobの違い - maeshimaの日記

    ESL Podcast Blog » Blog Archive » You Have Work/a Job To Doを見て。 workは集合名詞 jobは可算名詞 jobとworkはだいたい同じ意味 jobは特定の仕事を指す。これまでの会話に出てきた仕事を指すことが多い。 workも特定の仕事を指すけど、「やんなきゃいけないこと」みたいな意味で使われることが多い

    workとjobの違い - maeshimaの日記
    willnet
    willnet 2011/06/23
    復習用セルクマ
  • Rails 3.1 の mass assignment - maeshimaの日記

    attr_accessible に :as オプションが付けられるようになったらしい。 class Project < ActiveRecord::Base attr_accessible :name, :as => :admin end のようにすると、 @project.update_attributes(params[:project], :as => :admin) のように、変更側で同じ role を指定しないと name カラムの編集が出来なくなる。 参考 [http://asciicasts.com/episodes/265-rails-3-1-overview:title=@project.update_attributes(params[:project], :as => :admin)]

    Rails 3.1 の mass assignment - maeshimaの日記
    willnet
    willnet 2011/06/09
    復習用セルクマ/複数のroleを設定したいときにはどうしたらいいんだろう
  • git reset - maeshimaの日記

    git rm --cachedとgit resetって同じだよねたぶん git rm --cached - maeshimaの日記 追記 全然違った。 git rm --cached はファイルをリポジトリの管理下から削除 git reset は staging されてる変更を取り下げる

    git reset - maeshimaの日記
    willnet
    willnet 2011/04/13
    復習用セルクマ/git rm --cached はファイルをリポジトリの管理下から削除
  • 今週のrailscasts - Syntax Highlighting - maeshimaの日記

    Railscasts - Syntax Highlightingを見て。 シンタックスハイライト用のプラグイン CodeRay Ultraviolet pygments 早さもこの順番みたい。特にpygmentsは遅いので、もしつかうならcacheをうまく使うといいらしい。 CodeRayの使い方 あんまりしっかり見てないけど coderay用のcssを用意 CodeRay.scan(text, text_type).div(:css => :class) こんな感じで使えるみたい。

    今週のrailscasts - Syntax Highlighting - maeshimaの日記
    willnet
    willnet 2011/03/30
    復習用セルクマ/ブログ系のrailsアプリを作る時なんかに使える?
  • YAMLのフロースタイル - maeshimaの日記

    YAMLは下記のように一行で配列やハッシュを表すことが出来る。これをフロースタイルと言うらしい。 [aaa, bbb, ccc] { A: aaa, B: bbb, C: ccc } 通常の形式(ブロックスタイル)とフロースタイルを混在することも出来る route1: [ {x: 0, y: 0}, {x: 0, y: 5}, {x: 5, y: 5} ] route2: - {x: 0, y: 0} - {x: 5, y: 0} - {x: 5, y: 5} これ便利だから覚えたい 参考 Rubyist Magazine - プログラマーのための YAML 入門 (初級編)

    YAMLのフロースタイル - maeshimaの日記
    willnet
    willnet 2011/03/28
    復習用セルクマ/これ覚えたい
  • 今週のrailscasts - Action Mailer in Rails 3 - maeshimaの日記

    Railscasts - Action Mailer in Rails 3を見て。 作り方 rails g mailer hoge これまでとは違い app/mailers 配下にひな形が作られる 使い方 mail(:to => email, :subject => "subject", :from => "hoge@hoge.com") 下記のようにすればデフォルトの値を宣言できる default :from => email 送り方はこれまでのように、メソッド名の前にdeliver_をくっつける方式ではなくなった。下記のような感じで送信する UserMailer.registration_confirmation(@user).deliver 添付メールをつけるにはattachementsメソッドを使う attachments["rails.png"] = file view gene

    今週のrailscasts - Action Mailer in Rails 3 - maeshimaの日記
    willnet
    willnet 2011/03/24
    復習用セルクマ/メール送信のコールバックを追加するやりかた忘れてた
  • yasnippet - maeshimaの日記

    メモ yas/root-directory snippet設定のroot。特に設定しなくてもいい? yasnnipet-config.el rubikichiさん作成のyasnippet設定用ファイル。一時的なsnippetを定義したりできるようになるみたい。 yas/reload-allコマンド snippetsファイルをリロード yas/new_snippetコマンド 新しくsnippetを登録するときにつかう C-c C-t 登録したsnippetのテスト C-c C-c スニペットの登録 snippetファイルの定義 ここ見ると良さそう Yet Another Snippet extension 定義 name 一行説明文 コメント行 # --までがコメント行 $0 スニペット展開後に置かれるカーソルの位置

    yasnippet - maeshimaの日記
    willnet
    willnet 2011/03/20
    復習用セルクマ
  • Arrayのメソッドその2 - maeshimaの日記

    Array.try_convert 1.9から。引数のオブジェクトをto_aryメソッドを使って配列に変換しようとする。変更できない場合は nil を返す。 Array#* 整数なら配列を整数個連結して返す String(またはto_strを持つメソッド)ならjoin(str)と等価 重複削除系 とか & は重複削除されるけど + とか - は削除されない Array#- 引数に含む要素であれば複数削除される [ 1, 1, 2, 2, 3, 3, 4, 5 ] - [ 1, 2, 4 ] # => [3, 3, 5] Array#push,Array#<<,Array#concat,Array#+= これらは混同しがち。 Array#push 複数の引数をとって、配列に追加する。引数がArrayならArrayのまま追加する。 Array#<< 与えられたオブジェクトを配列に追加する。連続

    Arrayのメソッドその2 - maeshimaの日記
    willnet
    willnet 2011/03/15
    復習用セルクマ
  • thor - maeshimaの日記

    ASCIIcasts - “Episode 242 - Thor”を見て。メモ。 Rakeの短所 引数渡す方法が、環境変数しかない>< Rakeタスクは簡単にはグローバルに出来ない。基的にローカルのプロジェクトでしか使えない。 Sakeとかいうツールを使えばその辺何とかなるけど、追加のツールが必要。 Thor Thorは上記の問題を解決したRakeの代換ツール。Rails3のgeneratorはThorに依存してるので、Rails3いれると自動でインストールされる。Thor覚えるとgenerator作るのにも役立つ。 thor help でヘルプ見れる。 Thorスクリプトの作り方 Thorスクリプトは、Rakeタスクと同じように、lib/tasks ディレクトリに入れる。 Thorクラスを継承したクラスを作る クラスの名前はThorタスクの名前空間になる。 description付きの

    thor - maeshimaの日記
    willnet
    willnet 2011/03/15
    復習用セルクマ
  • git commit --amend で前のコミットメッセージをそのまま使う - maeshimaの日記

    git commit -C HEAD --amend

    git commit --amend で前のコミットメッセージをそのまま使う - maeshimaの日記
    willnet
    willnet 2011/03/12
    復習用セルクマ
  • 入門Gitメモ chapter4 - maeshimaの日記

    入門Gitposted with amazlet at 10.11.28濱野 純(Junio C Hamano) 秀和システム 売り上げランキング: 15555 Amazon.co.jp で詳細を見る git var gitで設定している変数を参照できるみたい。あんまり使いどころないかも git var GIT_COMMITTER_IDENT #=> willnet <netwillnet@gmail.com> 1290952798 +0900 git diffの読み方 @@ -6,6 +6,12 @@マイナスに続く二つの数値は、ハンクが表示する変更前の行番号、変更前の行数、プラスに続く二つの数値は、変更後の行番号、変更後の行数を示している。 git diff いつもこんがらがる git diff インデックスとワークツリーの差分 git diff --cached 最新コミットとインデッ

    入門Gitメモ chapter4 - maeshimaの日記
    willnet
    willnet 2011/03/08
    復習用セルクマ
  • Array.new - maeshimaの日記

    第一引数に要素の数を指定できる。第二引数にオブジェクトを指定すると、そのオブジェクトが第一引数の数格納された配列を返す。この場合、配列の全部の要素が同じオブジェクトを指すので、別々にしたい場合はブロックを使う。 a = Array.new(2, {}) #=> [{}, {}] a[0]["hoge"] = "fuga" a #=> [{"hoge"=>"fuga"}, {"hoge"=>"fuga"}] b = Array.new(2) { {} } #=> [{}, {}] b[0]["hoge"] = "fuga" b #=> [{"hoge"=>"fuga"}, {}] ブロックの引数にはインデックスが入る Array.new(5) { |i| i*i} #=> [0, 1, 4, 9, 16] 配列を引数に入れると、コピーした配列を返す。 a = [1, 2] b = Array

    Array.new - maeshimaの日記
    willnet
    willnet 2011/03/08
    復習用セルクマ
  • 今週のRailsCasts - Offline Apps Part 1 - maeshimaの日記

    HTML5 の cache manifest を使って、オフライン時でもコンテンツを表示させる話。 Railscasts - Offline Apps Part 1 ASCIIcasts - “Episode 247 - Offline Apps Part 1” rack-offline gemを入れると、 public 配下のファイルを見てmanifestファイルを自動で作ってくれる。 wycats/rack-offline - GitHub 単純に gem 入れて設定しただけだとだめでいろいろ落とし穴があるみたい。 キャッシュの課題1 Railsが自動でjavascriptやstylesheetsにタイムスタンプを付けてしまうのでうまくキャッシュが出来ない。下記を config/application.rb に書くとタイムスタンプを付けるのを抑制できる。 ENV["RAILS_ASSE

    今週のRailsCasts - Offline Apps Part 1 - maeshimaの日記
    willnet
    willnet 2011/03/08
    ENV["RAILS_ASSET_ID"] = ""でjsやcssのあとにつくタイムスタンプを抑制できる