{"id":49380,"date":"2017-05-10T11:21:06","date_gmt":"2017-05-10T02:21:06","guid":{"rendered":"http:\/\/www.softantenna.com\/wp\/?p=49380"},"modified":"2017-05-10T11:21:06","modified_gmt":"2017-05-10T02:21:06","slug":"sinatra-2-0-0","status":"publish","type":"post","link":"https:\/\/softantenna.com\/blog\/sinatra-2-0-0\/","title":{"rendered":"Sinatra v2.0.0\u304c\u30ea\u30ea\u30fc\u30b9"},"content":{"rendered":"<p><img decoding=\"async\" style=\"display:block; margin-left:auto; margin-right:auto;\" src=\"https:\/\/softantenna.com\/blog\/wp-content\/uploads\/2017\/05\/Is_20170510_110850.jpg\" alt=\"S 20170510 110850\" title=\"s_20170510_110850.jpg\" border=\"0\" width=\"802\" height=\"537\" \/><\/p>\n<p>Ruby\u88fd\u306e\u30b7\u30f3\u30d7\u30eb\u306aWeb\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u300c<a href=\"http:\/\/www.sinatrarb.com\/\">Sinatra<\/a>\u300d\u306e\u6700\u65b0\u7248v2.0.0\u304c5\u67087\u65e5\u306b\u516c\u958b\u3055\u308c\u307e\u3057\u305f\u3002\u73fe\u5728\u6700\u65b0\u7248\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092\u516c\u5f0f\u30b5\u30a4\u30c8\u3084rubygems.org\u304b\u3089<a href=\"https:\/\/github.com\/sinatra\/sinatra\/releases\">\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9<\/a>\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u6700\u65b0\u7248\u3067\u306fserver\u306b\u5bfe\u3059\u308b\"-q\"\u30d5\u30e9\u30b0\u306e\u8ffd\u52a0\u3084\u3001APP_ENV\u74b0\u5883\u5909\u6570\u306e\u63a8\u5968\u8a2d\u5b9a\u3078\u306e\u5909\u66f4\u3092\u59cb\u3081\u3001\u7d30\u304b\u306a\u4e0d\u5177\u5408\u306e\u4fee\u6b63\u3084\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u95a2\u9023\u306e\u6539\u826f\u306a\u3069\u3055\u307e\u3056\u307e\u306a\u5909\u66f4\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>v2.0.0\u306e\u5909\u66f4\u70b9\u306f\u4ee5\u4e0b\u306e\u901a\u308a:<\/p>\n<ul>\n<li>\n<p>Use Mustermann for patterns #1086 by Konstantin Haase<\/p>\n<\/li>\n<li>\n<p>Server now provides <code>-q<\/code> flag for quiet mode, which disables start\/stop messages #1153 by Vasiliy.<\/p>\n<\/li>\n<li>\n<p>Session middleware can now be specified with <code>:session_store<\/code> setting #1161 by Jordan Owens.<\/p>\n<\/li>\n<li>\n<p><code>APP_ENV<\/code> is now preferred and recommended over <code>RACK_ENV<\/code> for setting environment #984 by Damien Mathieu.<\/p>\n<\/li>\n<li>\n<p>Add Reel support #793 by Patricio Mac Adden.<\/p>\n<\/li>\n<li>\n<p>Make route params available during error handling #895 by Jeremy Evans.<\/p>\n<\/li>\n<li>\n<p>Unify <code>not_found<\/code> and <code>error<\/code> 404 behavior #896 by Jeremy Evans.<\/p>\n<\/li>\n<li>\n<p>Enable Ruby 2.3 <code>frozen_string_literal<\/code> feature #1076 by Vladimir Kochnev.<\/p>\n<\/li>\n<li>\n<p>Add Sinatra::ShowExceptions::TEMPLATE and patched Rack::ShowExceptions to prefer Sinatra template by Zachary Scott.<\/p>\n<\/li>\n<li>\n<p>Sinatra::Runner is used internally for integration tests #840 by Nick Sutterer.<\/p>\n<\/li>\n<li>\n<p>Fix case-sensitivity issue in <code>uri<\/code> method #889 by rennex.<\/p>\n<\/li>\n<li>\n<p>Use <code>Rack::Utils.status_code<\/code> to allow <code>status<\/code> helper to use symbol as well as numeric codes #968 by Tobias H. Michaelsen.<\/p>\n<\/li>\n<li>\n<p>Improved error handling for invalid params through Rack #1070 by Jordan Owens.<\/p>\n<\/li>\n<li>\n<p>Ensure template is cached only once #1021 by Patrik Rak.<\/p>\n<\/li>\n<li>\n<p>Rack middleware is initialized at server runtime rather than after receiving first request #1205 by Itamar Turner-Trauring.<\/p>\n<\/li>\n<li>\n<p>Improve Session Secret documentation to encourage better security practices #1218 by Glenn Rempe<\/p>\n<\/li>\n<li>\n<p>Exposed global and per-route options for Mustermann route parsing #1233 by Mike Pastore<\/p>\n<\/li>\n<li>\n<p>Use same <code>session_secret<\/code> for classic and modular apps in development #1245 by Marcus Stollsteimer<\/p>\n<\/li>\n<li>\n<p>Make authenticity token length a fixed value of 32 #1181 by Jordan Owens<\/p>\n<\/li>\n<li>\n<p>Modernize Rack::Protection::ContentSecurityPolicy with CSP Level 2 and 3 Directives #1202 by Glenn Rempe<\/p>\n<\/li>\n<li>\n<p>Adds preload option to Rack:Protection:StrictTransport #1209 by Ed Robinson<\/p>\n<\/li>\n<li>\n<p>Improve BadRequest logic. Raise and handle exceptions if status is 400 #1212 by Mike Pastore<\/p>\n<\/li>\n<li>\n<p>Make Rack::Test a development dependency #1232 by Mike Pastore<\/p>\n<\/li>\n<li>\n<p>Capture exception messages of raised NotFound and BadRequest #1210 by Mike Pastore<\/p>\n<\/li>\n<li>\n<p>Add explicit set method to contrib\/cookies to override cookie settings #1240 by Andrew Allen<\/p>\n<\/li>\n<li>\n<p>Avoid executing filters even if prefix matches with other namespace #1253 by namusyaka<\/p>\n<\/li>\n<li>\n<p>Make <code>#has_key?<\/code> also indifferent in access, can accept String or Symbol #1262 by John Hope<\/p>\n<\/li>\n<li>\n<p>Add <code>allow_if<\/code> option to bypass json csrf protection #1265 by Jordan Owens<\/p>\n<\/li>\n<li>\n<p>rack-protection: Bundle StrictTransport, CookieTossing, and CSP #1267 by Mike Pastore<\/p>\n<\/li>\n<li>\n<p>Add <code>:strict_paths<\/code> option for managing trailing slashes #1273 by namusyaka<\/p>\n<\/li>\n<li>\n<p>Add full IndifferentHash implementation to params #1279 by Mike Pastore<\/p>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Ruby\u88fd\u306e\u30b7\u30f3\u30d7\u30eb\u306aWeb\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u300cSinatra\u300d\u306e\u6700\u65b0\u7248v2.0.0\u304c5\u67087\u65e5\u306b\u516c\u958b\u3055\u308c\u307e\u3057\u305f\u3002\u73fe\u5728\u6700\u65b0\u7248\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092\u516c\u5f0f\u30b5\u30a4\u30c8\u3084rubygems.org\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u6700\u65b0\u7248\u3067\u306fse [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":49381,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"swell_btn_cv_data":"","footnotes":""},"categories":[75],"tags":[154,3906],"class_list":["post-49380","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software","tag-ruby","tag-sinatra"],"_links":{"self":[{"href":"https:\/\/softantenna.com\/blog\/wp-json\/wp\/v2\/posts\/49380","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/softantenna.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/softantenna.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/softantenna.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/softantenna.com\/blog\/wp-json\/wp\/v2\/comments?post=49380"}],"version-history":[{"count":0,"href":"https:\/\/softantenna.com\/blog\/wp-json\/wp\/v2\/posts\/49380\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/softantenna.com\/blog\/wp-json\/wp\/v2\/media\/49381"}],"wp:attachment":[{"href":"https:\/\/softantenna.com\/blog\/wp-json\/wp\/v2\/media?parent=49380"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/softantenna.com\/blog\/wp-json\/wp\/v2\/categories?post=49380"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/softantenna.com\/blog\/wp-json\/wp\/v2\/tags?post=49380"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}