2012-05-09 達人出版会版
具体例はあっても仕組みやそうする理由の説明に乏しく、わかりにくかった。
具体的に裏で何が起こっているかに対する説明がないため、システムにmanifestを適用したとき何が起こるのかわからなくてこわい。 manifestに定義されてるリソースを列挙→依存関係でソート→順番に適用、だと想像しているが。
| # -*- coding: utf-8 -*- | |
| # まだテーブル構造がちゃんと決まってないので、データをコード内にベタ書きしてある。 | |
| # 将来的にはActiveRecord化してDBに保存したい。 | |
| class NewModel | |
| def self.find(id) | |
| INSTANCES[id] || (raise "not found") | |
| end | |
| INSTANCES = { |
| Application.configure do | |
| config.after_initialize do | |
| # Partialの情報をHTMLに埋める | |
| # For ActionPack 3.2.8 | |
| class ActionView::PartialRenderer | |
| def render_with_partial_annotation(*args) | |
| setup(*args) | |
| path = @path | |
| content = "".html_safe |
| # config/environments/development.rb | |
| # ActiveRecord 3.2.8 / mysql2 0.3.11 | |
| Application.configure do | |
| config.after_initialize do | |
| class ActiveRecord::ConnectionAdapters::Mysql2Adapter | |
| def execute_with_warning_is_error(sql, *rest) | |
| result = execute_without_warning_is_error(sql, *rest) | |
| warnings = execute_without_warning_is_error('show warnings', :skip_logging).to_a |
| gem "fastimage", "~>1.2.13" | |
| module ApplicationHelper | |
| include ActionView::Helpers::AssetTagHelper | |
| # 画像サイズ見て自動でwidth/height属性つけるimage_tag | |
| def image_tag_with_auto_size(source, options) | |
| if options[:size] || options[:width] || options[:height] | |
| image_tag_without_auto_size(source, options) | |
| else |
| task :server_list do | |
| roles.each do|name, role| | |
| role.each do|server| | |
| puts "%10s %13s %s" % [name, server, server.options.inspect] | |
| end | |
| end | |
| end |
| [ -s ~/.rvm/scripts/rvm ] && source ~/.rvm/scripts/rvm | |
| source ~/scripts/vendor/git-completion/git-completion.bash | |
| source ~/scripts/vendor/git-completion/git-prompt.sh | |
| if [ "Darwin" = "$(uname)" ]; then | |
| alias sed=gsed | |
| export EDITOR=vim | |
| fi |
| # usage: | |
| # class User < AR::Base | |
| # extend ActiveSTI | |
| # define_sti_rule do|record| | |
| # if record['parent'] | |
| # ChildUser | |
| # else | |
| # RootUser | |
| # end | |
| # end |
| def itss(name, &block) | |
| describe name do | |
| it { subject.instance_eval(name).instance_eval(&block) } | |
| end | |
| end | |
| describe A do | |
| subject { A.new } | |
| itss('name.length') { should == 4 } | |
| end |
| module ApplicationHelper | |
| def self.define_with_template(helper_name, template_type, template, locals = []) | |
| compiled = Tilt[template_type].new(nil) { template } | |
| define_method(helper_name) do|*args, &block| | |
| compiled.render(self, Hash[*locals.zip(args).flatten], &block).html_safe | |
| end | |
| end | |
| define_with_template :render_user_name, :slim, <<-SLIM, [:user_name] | |
| .user |