トップ «前の日記(2013-12-12) 最新 次の日記(2014-01-27)» 編集

Route 477



2013-12-13

[ruby] Middlemanで使えるヘルパーを(無理矢理)一覧表示する

引き続き、Middleman Advent Calendar 2013の13日目です。

Middlemanでサイト作成中に、current_resourceみたいなヘルパーがないか知りたかったのですが、探す方法がわからなかったので、Ruby的なテクニックで無理矢理一覧を表示してみました。

まず、レイアウトでも通常ファイルでも良いですが、foo.html.erbのようにerbとして解釈されるファイルを用意します。 次に、適当な位置に以下のerbタグを入れます。

<% require 'pp'
pp self.methods
exit
%>

この状態でmiddleman buildを実行すると、ページがコンパイルされるタイミングで上のRubyコードが走り、現在のselfを表示したあとexitで強制終了します。 これだけだとobject_idとかkind_of?みたいに関係ないメソッドがたくさん表示されるため、Objectクラスで定義されているメソッドを省きます。

<% require 'pp'
pp self.methods - Object.instance_methods
exit
%>

これでおおよそ、middleman関係のメソッドだけ表示されるようになりました。長いですが出力結果を貼っておきます。

[:asset_url,
 :stylesheet_link_tag,
 :javascript_include_tag,
 :sprockets,
 :lorem,
 :placekitten,
 :content_tag,
 :capture_html,
 :auto_find_proper_handler,
 :asset_stamp,
 :auto_stylesheet_link_tag,
 :auto_javascript_include_tag,
 :auto_tag,
 :page_classes,
 :asset_path,
 :url_for,
 :link_to,
 :form_tag,
 :template_data_for_file,
 :before,
 :ready,
 :after_build,
 :helpers,
 :root,
 :root_path,
 :initialized,
 :instance_available,
 :after_configuration,
 :before_configuration,
 :build_config,
 :development_config,
 :configure,
 :before_render,
 :after_render,
 :cache,
 :development?,
 :build?,
 :source_dir,
 :logger,
 :instrument,
 :full_path,
 :compass_config,
 :breadcrumbs,
 :number_to_currency,
 :number_to_percentage,
 :number_with_delimiter,
 :number_with_precision,
 :number_to_human_size,
 :partial,
 :render_partial,
 :escape_html,
 :h,
 :sanitize_html,
 :h!,
 :strip_tags,
 :simple_format,
 :pluralize,
 :truncate,
 :truncate_words,
 :word_wrap,
 :highlight,
 :distance_of_time_in_words,
 :time_ago_in_words,
 :js_escape_html,
 :escape_javascript,
 :form_for,
 :fields_for,
 :hidden_form_method_field,
 :field_set_tag,
 :error_messages_for,
 :error_message_on,
 :label_tag,
 :text_field_tag,
 :number_field_tag,
 :telephone_field_tag,
 :phone_field_tag,
 :email_field_tag,
 :search_field_tag,
 :url_field_tag,
 :hidden_field_tag,
 :text_area_tag,
 :password_field_tag,
 :check_box_tag,
 :radio_button_tag,
 :file_field_tag,
 :select_tag,
 :button_tag,
 :submit_tag,
 :image_submit_tag,
 :csrf_token_field,
 :button_to,
 :options_from_collection,
 :options_for_select,
 :grouped_options_for_select,
 :blank_option,
 :flash_tag,
 :feed_tag,
 :mail_to,
 :meta_tag,
 :favicon_tag,
 :image_tag,
 :image_path,
 :safe_content_tag,
 :input_tag,
 :tag,
 :concat_content,
 :concat,
 :concat_safe_content,
 :block_is_template?,
 :content_for,
 :content_for?,
 :yield_content,
 :content_blocks,
 :find_proper_handler,
 :mark_safe,
 :with_layout,
 :page,
 :sitemap,
 :current_page,
 :current_resource,
 :redirect_manager,
 :redirect,
 :ignore_manager,
 :ignore,
 :proxy_manager,
 :proxy,
 :endpoint_manager,
 :endpoint,
 :init_haml_helpers,
 :non_haml,
 :find_and_preserve,
 :preserve,
 :flatten,
 :list_of,
 :html_attrs,
 :tab_up,
 :tab_down,
 :with_tabs,
 :surround,
 :precede,
 :succeed,
 :capture_haml,
 :haml_concat,
 :haml_indent,
 :haml_tag,
 :html_escape,
 :escape_once,
 :block_is_haml?,
 :template_extensions,
 :render_template,
 :render,
 :render_individual_file,
 :options_for_ext,
 :fetch_layout,
 :locate_layout,
 :wrap_layout,
 :current_engine,
 :current_engine=,
 :resolve_template,
 :data,
 :files,
 :request,
 :current_path,
 :current_path=,
 :use,
 :map,
 :req,
 :req=,
 :call,
 :call!,
 :halt,
 :process_request,
 :mime_type,
 :not_found,
 :send_file,
 :activate,
 :extensions,
 :run_hook,
 :config,
 :settings,
 :set,
 :method_missing]

これで、探していたcurrent_resourceはそのものずばりのメソッドが存在することが分かりました。 これらのメソッドはerb内で呼ぶことができますが、全部がMiddlemanのオフィシャルなAPIであるとは限らないため、使用する際は注意しましょう。