<?xml version="1.0" encoding="UTF-8"?>
<article>
  <body>link_to &#31561;&#12398;&#12504;&#12523;&#12497;&#12513;&#12477;&#12483;&#12489;&#12399; sinatra &#26412;&#20307;&#12395;&#12399;&#21547;&#12414;&#12428;&#12390;&#12356;&#12414;&#12379;&#12435;&#12364;&#12289;
sinatra_more &#12392;&#12356;&#12358; gem &#12364;&#29992;&#24847;&#12373;&#12428;&#12390;&#12356;&#12414;&#12377;&#12290;

## install

shell&gt;&gt;
% gem install sinatra_more
&lt;&lt;--

## standalone &#21033;&#29992;&#12398;&#22580;&#21512;

&#30452;&#25509; Sinatra::Base &#12395; register &#12375;&#12390;&#12375;&#12414;&#12356;&#12414;&#12375;&#12423;&#12358;&#12290;

ruby&gt;&gt;
require 'sinatra'
...
require 'sinatra_more/markup_plugin'
Sinatra::Base.register SinatraMore::MarkupPlugin
...
get '/' do
  ...
&lt;&lt;--

## &#12463;&#12521;&#12473;&#21033;&#29992;&#12398;&#22580;&#21512;

&#35442;&#24403;&#12463;&#12521;&#12473;&#12391; register &#12375;&#12414;&#12377;&#12290;

ruby&gt;&gt;
require 'sinatra_more/markup_plugin'

class Application &lt; Sinatra::Base
  register SinatraMore::MarkupPlugin
end
&lt;&lt;--

## MarkupPlugin

link_to &#12384;&#12369;&#12391;&#12394;&#12367;&#12289;&#20840;56&#31278;(ver 0.3.33 &#29694;&#22312;)&#12418;&#12398;&#12504;&#12523;&#12497;&#12513;&#12477;&#12483;&#12489;&#12364;&#21033;&#29992;&#12391;&#12365;&#12427;&#12424;&#12358;&#12395;&#12394;&#12426;&#12414;&#12377;&#12290;
&#20197;&#19979;&#12395;&#12289;&#12424;&#12367;&#20351;&#12356;&#12381;&#12358;&#12394;&#12418;&#12398;&#12434;&#25244;&#31883;&#12375;&#12414;&#12377;&#12290;

ruby&gt;&gt;
link_to(*args, &amp;block)
stylesheet_link_tag(*sources)
javascript_include_tag(*sources)
image_tag(url, options={})
image_path(src)
escape_html(text)
h!(text, blank_text = '&amp;nbsp;')
content_tag(*args, &amp;block)
tag(name, options={})
input_tag(type, options = {})
form_for(object, url, settings={}, &amp;block)
text_field_tag(name, options={})
&lt;&lt;--

&#35443;&#32048;&#12399; lib/sinatra_more/markup_plugin/*.rb &#12434;&#30906;&#35469;&#12375;&#12390;&#19979;&#12373;&#12356;&#12290;

## &#12381;&#12398;&#20182;&#12398;Plugin

sinatra_more gem &#12395;&#12399;&#12289;
MarkupPlugin &#20197;&#22806;&#12395;&#12418;
RenderPlugin&#12289;WardenPlugin&#12289;MailerPlugin&#12289;RoutingPlugin
&#12392;&#12356;&#12387;&#12383;&#12503;&#12521;&#12464;&#12452;&#12531;&#12364;&#29992;&#24847;&#12373;&#12428;&#12390;&#12356;&#12414;&#12377;&#12290;
&#21033;&#29992;&#26041;&#27861;&#12399; MarkupPlugin &#12398;&#22580;&#21512;&#12392;&#21516;&#12376;&#12391;&#12289;
&#21033;&#29992;&#12375;&#12383;&#12356;&#12503;&#12521;&#12464;&#12452;&#12531;&#21517;&#12434;&#21015;&#25369;&#12375;&#12390;&#12356;&#12365;&#12414;&#12377;&#12290;

ruby&gt;&gt;
require 'sinatra_more/markup_plugin'
require 'sinatra_more/render_plugin'
Sinatra::Base.register SinatraMore::MarkupPlugin
Sinatra::Base.register SinatraMore::RenderPlugin
...
&lt;&lt;--

&#21508;&#12503;&#12521;&#12464;&#12452;&#12531;&#12398;&#20195;&#34920;&#30340;&#12394;&#12513;&#12477;&#12483;&#12489;&#12434;&#35352;&#36617;&#12375;&#12414;&#12377;&#12290;
&#20363;&#12360;&#12400;&#12289;RenderPlugin &#12395;&#12399;&#12415;&#12435;&#12394;&#22823;&#22909;&#12365;&#12394; &quot;partial&quot; &#12364;&#20837;&#12387;&#12390;&#12383;&#12426;&#12375;&#12414;&#12377;&#12398;&#12391;&#12289;&#12375;&#12387;&#12363;&#12426;&#12481;&#12455;&#12483;&#12463;&amp;register &#12375;&#12414;&#12375;&#12423;&#12358;&#12290;

## RenderPlugin

&#25551;&#30011;&#31995;&#12503;&#12521;&#12464;&#12452;&#12531;

ruby&gt;&gt;
partial(template, options={})
erb_template(template_path, options={})
haml_template(template_path, options={})
render_template(template_path, options={})
&lt;&lt;--

## WardenPlugin

&#35469;&#35388;&#31995;&#12503;&#12521;&#12464;&#12452;&#12531;

ruby&gt;&gt;
current_user
authenticate_user!
logged_in?
authenticated?(&amp;block)
&lt;&lt;--

## MailerPlugin

&#12513;&#12540;&#12523;&#38306;&#20418;&#65311;(&#20351;&#12431;&#12394;&#12356;&#12398;&#12391;&#26410;&#35519;&#26619;)

## RoutingPlugin

&#12523;&#12540;&#12486;&#12451;&#12531;&#12464;&#31995;&#12503;&#12521;&#12464;&#12452;&#12531; (named route?)

ruby&gt;&gt;
map(*args, &amp;block)
  # map(:accounts).to('/accounts/url')
  # map(:admin, :show).to('/admin/show/:id')
  # map(:admin) { |namespace| namespace.map(:show).to('/admin/show/:id') }
&lt;&lt;--


</body>
  <cached-tag-list>sinatra</cached-tag-list>
  <comments-count type="integer">0</comments-count>
  <created-at type="datetime">2010-02-04T01:10:55+00:00</created-at>
  <daily-archive-id type="integer">1330</daily-archive-id>
  <filter-type>blue_stole</filter-type>
  <id type="integer">1704</id>
  <monthly-archive-id type="integer">212</monthly-archive-id>
  <pdf-digest nil="true"></pdf-digest>
  <permalink>/articles/1704</permalink>
  <published-at type="datetime">2010-02-04T00:22:00+00:00</published-at>
  <secret>fcdd0c43-65f2-4a3c-9bc7-7abb53424726</secret>
  <title>Sinatra &#12391; link_to &#12434;&#20351;&#12358;</title>
  <updated-at type="datetime">2010-02-04T01:10:56+00:00</updated-at>
  <user-id type="integer">48</user-id>
</article>
