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であるとは限らないため、使用する際は注意しましょう。