{"id":26462,"date":"2017-03-13T11:14:19","date_gmt":"2017-03-13T11:14:19","guid":{"rendered":"https:\/\/dev.railscarma.com\/decent-exposure-gem-goodbye-repeating-instance-variables\/"},"modified":"2024-01-10T12:54:32","modified_gmt":"2024-01-10T12:54:32","slug":"decent-exposure-gem-goodbye-repeating-instance-variables","status":"publish","type":"post","link":"https:\/\/www.railscarma.com\/ja\/%e3%83%96%e3%83%ad%e3%82%b0\/%e6%8a%80%e8%a1%93%e8%ab%96%e6%96%87\/decent-exposure-gem-goodbye-repeating-instance-variables\/","title":{"rendered":"Decent Exposure Gem \u2013 \u7e70\u308a\u8fd4\u3057\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u306b\u5225\u308c\u3092\u544a\u3052\u308b"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"26462\" class=\"elementor elementor-26462\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-4c8289d6 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"4c8289d6\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-abe1b56\" data-id=\"abe1b56\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-480a99e2 elementor-widget elementor-widget-text-editor\" data-id=\"480a99e2\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>\u5c0e\u5165<\/h3>\n<p>\u30ae\u30c3\u30c8\u30cf\u30d6: <a href=\"https:\/\/github.com\/hashrocket\/decent_exposure\" target=\"_blank\" rel=\"noopener noreferrer\">\u307e\u3068\u3082\u306a\u9732\u51fa\u306e\u5b9d\u77f3<\/a><br>\nDecent Exposure \u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u3092\u7e70\u308a\u8fd4\u3059\u4ee3\u308f\u308a\u306b\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u5168\u4f53\u3067\u4f7f\u7528\u3067\u304d\u308b\u516c\u958b\u5909\u6570\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002\u516c\u958b\u3055\u308c\u305f\u5909\u6570\u306f\u30d3\u30e5\u30fc\u304b\u3089\u3082\u30a2\u30af\u30bb\u30b9\u3067\u304d\u3001\u7d50\u679c\u306e\u5024\u3092\u8a18\u61b6\u3057\u307e\u3059\u3002\u8a00\u3044\u63db\u3048\u308c\u3070\u3001\u3053\u308c\u306f\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3067\u5ba3\u8a00\u578b\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9\u3092\u4f5c\u6210\u3059\u308b\u305f\u3081\u306e\u30d8\u30eb\u30d1\u30fc\u3067\u3059\u3002<\/p>\n<h3>\u3044\u304f\u3064\u304b\u306e\u30dd\u30a4\u30f3\u30c8<\/h3>\n<ul>\n<li>\u30ab\u30d7\u30bb\u30eb\u5316\u306e\u6539\u5584<\/li>\n<li>\u30d3\u30e5\u30fc\u306e\u5909\u6570\u306f\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306e\u4e0a\u90e8\u306b\u8868\u793a\u3055\u308c\u307e\u3059<\/li>\n<li>Strong_parameters\u3001\u30c7\u30b3\u30ec\u30fc\u30bf\u3068\u306e\u4e92\u63db\u6027<\/li>\n<li>\u30b3\u30fc\u30c9\u306e\u5302\u3044\u3092\u66b4\u9732\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n<p>\u3053\u3053\u3092\u898b\u3066\u304f\u3060\u3055\u3044: <a href=\"http:\/\/c2.com\/cgi\/wiki?CodeSmell\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/c2.com\/cgi\/wiki?CodeSmell<\/a><\/p>\n<h3>Rails \u30a2\u30d7\u30ea\u3067\u9069\u5207\u306a\u9732\u51fa\u306e gem \u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306e\u30d2\u30f3\u30c8<\/h3>\n<ul>\n<li>\u5b9d\u77f3\u3092\u8ffd\u52a0\u3059\u308b <strong>\u300c\u307e\u3068\u3082\u306a\u9732\u51fa\u300d<\/strong> Gemfile \u306b\u30a2\u30af\u30bb\u30b9\u3057\u3001\u30d0\u30f3\u30c9\u30eb\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<\/li>\n<li>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306e\u4f7f\u3044\u65b9 <strong>\u307e\u3068\u3082\u306a\u9732\u51fa<\/strong> \u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059:<\/li>\n<\/ul>\n<p><a href=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2024\/01\/Decent-Exposure-Gem.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-26463\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2024\/01\/Decent-Exposure-Gem.png\" alt=\"\u307e\u3068\u3082\u306a\u9732\u51fa\u306e\u5b9d\u77f3\" width=\"647\" height=\"461\"><\/a><\/p>\n<ul>\n<li>\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001\u6a5f\u5bc6\u6027\u306e\u9ad8\u3044\u30e2\u30c7\u30eb\u5c5e\u6027\u3092\u8aa4\u3063\u3066\u66f4\u65b0\u3059\u308b\u3053\u3068\u3092\u9632\u3050\u65b9\u6cd5\u3068\u3057\u3066\u3001\u9069\u5207\u306a\u9732\u51fa\u304c\u542b\u307e\u308c\u3066\u304a\u308a\u3001\u3059\u3079\u3066\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u30db\u30ef\u30a4\u30c8\u30ea\u30b9\u30c8\u306b\u767b\u9332\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u5f37\u529b\u306a\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u6e21\u3059\u305f\u3081\u306e\u30b5\u30dd\u30fc\u30c8\u304c\u7d44\u307f\u8fbc\u307e\u308c\u3066\u3044\u307e\u3059\u3002<\/li>\n<li>It deals with overexposure.The ideal number of exposures is two per controller<br>\n(1 -&gt; singular resource, e.g. item and 2 -&gt; plural collections e.g. items).<\/li>\n<li>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc \u30af\u30e9\u30b9\u306e\u6700\u4e0a\u4f4d\u304c\u30a8\u30af\u30b9\u30dd\u30fc\u30ba \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3067\u6df7\u96d1\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u30a8\u30af\u30b9\u30dd\u30fc\u30ba\u3059\u308b\u5909\u6570\u304c\u30d3\u30e5\u30fc\u3067\u4f7f\u7528\u3055\u308c\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308b\u3001\u304a\u3088\u3073\u8907\u6570\u306e\u8cac\u4efb\u3092\u6301\u3064\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306a\u3069\u30012 \u3064\u306e\u30b3\u30fc\u30c9\u81ed\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n<li>We can utilize expose with block feature to decorate the object:<br>\nexpose(:item) { |default| ItemDecorator.new(default) }<\/li>\n<li>\u30e2\u30c7\u30eb\u30af\u30e9\u30b9\u304c Blog::Post \u306e\u3088\u3046\u306a\u540d\u524d\u7a7a\u9593\u306b\u3088\u3063\u3066\u30b9\u30b3\u30fc\u30d7\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u3001model \u3092\u4f7f\u7528\u3057\u3066\u516c\u958b\u547c\u3073\u51fa\u3057\u3067\u305d\u308c\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<br>\n<blockquote><p><code>class Blog::PostsController &lt; ApplicationController<br>\nexpose(:post, model: Blog::Post)<br>\n\u7d42\u308f\u308a<\/code><\/p><\/blockquote>\n<\/li>\n<\/ul>\n<h3>\u3044\u304f\u3064\u304b\u306e\u30ea\u30bd\u30fc\u30b9<\/h3>\n<p>API \u306e\u5909\u66f4:<a href=\"https:\/\/github.com\/hashrocket\/decent_exposure\/wiki\/Api-changes-in-version-3\" target=\"_blank\" rel=\"noopener noreferrer\"> \u65b0\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u306e API \u306e\u5909\u66f4\u70b9<\/a><br>\n\u30ec\u30fc\u30eb\u30ad\u30e3\u30b9\u30c8: <a href=\"http:\/\/railscasts.com\/episodes\/259-decent-exposure\" target=\"_blank\" rel=\"noopener noreferrer\">\u307e\u3068\u3082\u306a\u9732\u51fa<\/a><br>\n\u304d\u3061\u3093\u3068\u3057\u305f\u88c5\u98fe: <a href=\"https:\/\/github.com\/netguru\/decent_decoration\" target=\"_blank\" rel=\"noopener noreferrer\">\u307e\u3068\u3082\u306a\u88c5\u98fe\u306e\u5b9d\u77f3<\/a><br>\n\u30d6\u30ed\u30b0\uff1a <a href=\"http:\/\/blog.remarkablelabs.com\/2013\/01\/how-to-decrease-coupling-in-your-controllers-views-with-decent_exposure-for-better-maintainability\" target=\"_blank\" rel=\"noopener noreferrer\">\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3068\u30d3\u30e5\u30fc\u306e\u7d50\u5408\u3092\u6e1b\u3089\u3059\u65b9\u6cd5<\/a><\/p>\n<p>\u4e5e\u3046\u3054\u671f\u5f85\uff01<\/p>\n<p>Thanks,<\/p>\n<div class=\"author-info\"><strong>\u30eb\u30d0\u30a4\u30d6\u30fb\u30b7\u30fc\u30b8\u30a7\u30a4<\/strong><\/div>\n<div class=\"author-info\">\u30b7\u30cb\u30a2 Ruby on Rails \u958b\u767a\u8005&nbsp;<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-6ddd1337 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"6ddd1337\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-51b675fc\" data-id=\"51b675fc\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-51d3554a elementor-widget elementor-widget-heading\" data-id=\"51d3554a\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\u6700\u65b0\u306e\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u3092\u8cfc\u8aad\u3059\u308b<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5c4d0739 elementor-widget elementor-widget-shortcode\" data-id=\"5c4d0739\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\t\t\t\t\t<script type=\"text\/javascript\">\n\t\t\t\t\t\tvar gCaptchaSibWidget;\n                        var onloadSibCallbackInvisible = function () {\n\n                            var element = document.getElementsByClassName('sib-default-btn');\n                            var countInvisible = 0;\n                            var indexArray = [];\n                            jQuery('.sib-default-btn').each(function (index, el) {\n                                if ((jQuery(el).attr('id') == \"invisible\")) {\n                                    indexArray[countInvisible] = index;\n                                    countInvisible++\n                                }\n                            });\n\n                            jQuery('.invi-recaptcha').each(function (index, el) {\n                                grecaptcha.render(element[indexArray[index]], {\n                                    'sitekey': jQuery(el).attr('data-sitekey'),\n                                    'callback': sibVerifyCallback,\n                                });\n                            });\n                        };\n\t\t\t\t\t<\/script>\n\t\t\t\t\t                <script src=\"https:\/\/www.google.com\/recaptcha\/api.js?onload=onloadSibCallbackInvisible&render=explicit\" async defer><\/script>\n\t\t\t\t\n\t\t\t<form id=\"sib_signup_form_1\" method=\"post\" class=\"sib_signup_form\" action=\"\">\n\t\t\t\t<div class=\"sib_loader\" style=\"display:none;\"><img\n\t\t\t\t\t\t\tsrc=\"https:\/\/www.railscarma.com\/wp-includes\/images\/spinner.gif\" alt=\"\u30ed\u30fc\u30c0\"><\/div>\n\t\t\t\t<input type=\"hidden\" name=\"sib_form_action\" value=\"subscribe_form_submit\">\n\t\t\t\t<input type=\"hidden\" name=\"sib_form_id\" value=\"1\">\n                <input type=\"hidden\" name=\"sib_form_alert_notice\" value=\"Please fill out this field\">\n                <input type=\"hidden\" name=\"sib_form_invalid_email_notice\" value=\"Your email address is invalid\">\n                <input type=\"hidden\" name=\"sib_security\" value=\"d7f7626ab9\">\n\t\t\t\t<div class=\"sib_signup_box_inside_1\">\n\t\t\t\t\t<div style=\"\/*display:none*\/\" class=\"sib_msg_disp\">\n\t\t\t\t\t<\/div>\n                                            <div id=\"sib_captcha_invisible\" class=\"invi-recaptcha\" data-sitekey=\"6LdikOAaAAAAAJ6SWrrKVQrtw7TQpQAEnv0HS0G3\"><\/div>\n                    \t\t\t\t\t<p class=\"sib-email-area\">\r\n    <label class=\"sib-email-area\"><\/label>\r\n    <input type=\"email\" class=\"sib-email-area\" name=\"email\" required=\"required\" placeholder=\"\u96fb\u5b50\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\">\r\n<\/p>\r\n<p class=\"sib-NAME-area\">\r\n    <label class=\"sib-NAME-area\"><\/label>\r\n    <input type=\"text\" class=\"sib-NAME-area\" name=\"NAME\" placeholder=\"\u540d\u524d\">\r\n<\/p>\r\n<p>\r\n    <input type=\"submit\" id=\"invisible\" class=\"sib-default-btn\" value=\"\u8cfc\u8aad\u3059\u308b\">\r\n<\/p>\t\t\t\t<\/div>\n\t\t\t<input type=\"hidden\" name=\"trp-form-language\" value=\"ja\"\/><\/form>\n\t\t\t<style>\n\t\t\t\tform#sib_signup_form_1 p.sib-alert-message {\n    padding: 6px 12px;\n    margin-bottom: 20px;\n    border: 1px solid transparent;\n    border-radius: 4px;\n    -webkit-box-sizing: border-box;\n    -moz-box-sizing: border-box;\n    box-sizing: border-box;\n}\nform#sib_signup_form_1 p.sib-alert-message-error {\n    background-color: #f2dede;\n    border-color: #ebccd1;\n    color: #a94442;\n}\nform#sib_signup_form_1 p.sib-alert-message-success {\n    background-color: #dff0d8;\n    border-color: #d6e9c6;\n    color: #3c763d;\n}\nform#sib_signup_form_1 p.sib-alert-message-warning {\n    background-color: #fcf8e3;\n    border-color: #faebcc;\n    color: #8a6d3b;\n}\n\t\t\t<\/style>\n\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t  <div class=\"related-post slider\">\r\n        <div class=\"headline\">\u95a2\u9023\u8a18\u4e8b<\/div>\r\n    <div class=\"post-list owl-carousel\">\r\n\r\n            <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"\u30ab\u30df\u30ca\u30ea\u30b8\u30a7\u30e0\" href=\"https:\/\/www.railscarma.com\/ja\/%e3%83%96%e3%83%ad%e3%82%b0\/%e6%8a%80%e8%a1%93%e8%ab%96%e6%96%87\/%e3%82%ab%e3%83%9f%e3%83%8a%e3%83%aa%e3%82%b8%e3%82%a7%e3%83%a0\/?related_post_from=37277\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"\u30ab\u30df\u30ca\u30ea\u30b8\u30a7\u30e0\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"\u30ab\u30df\u30ca\u30ea\u30b8\u30a7\u30e0\" href=\"https:\/\/www.railscarma.com\/ja\/%e3%83%96%e3%83%ad%e3%82%b0\/%e6%8a%80%e8%a1%93%e8%ab%96%e6%96%87\/%e3%82%ab%e3%83%9f%e3%83%8a%e3%83%aa%e3%82%b8%e3%82%a7%e3%83%a0\/?related_post_from=37277\">\r\n        \u30ab\u30df\u30ca\u30ea\u30b8\u30a7\u30e0  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"\u306a\u305c2026\u5e74\u306bRuby on Rails\u958b\u767a\u8005\u3092\u96c7\u3046\u306e\u304b\uff1f\" href=\"https:\/\/www.railscarma.com\/ja\/%e3%83%96%e3%83%ad%e3%82%b0\/%e3%83%ad%e3%83%bc\/why-to-hire-ruby-on-rails-developers\/?related_post_from=30627\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"2022 \u5e74\u306b Ruby on Rails \u958b\u767a\u8005\u3092\u96c7\u7528\u3059\u308b\u7406\u7531\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"\u306a\u305c2026\u5e74\u306bRuby on Rails\u958b\u767a\u8005\u3092\u96c7\u3046\u306e\u304b\uff1f\" href=\"https:\/\/www.railscarma.com\/ja\/%e3%83%96%e3%83%ad%e3%82%b0\/%e3%83%ad%e3%83%bc\/why-to-hire-ruby-on-rails-developers\/?related_post_from=30627\">\r\n        \u306a\u305c2026\u5e74\u306bRuby on Rails\u958b\u767a\u8005\u3092\u96c7\u3046\u306e\u304b\uff1f  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"\u30a8\u30f3\u30bf\u30fc\u30d7\u30e9\u30a4\u30ba \u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u958b\u767a\u306b\u304a\u3051\u308b\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2 \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u91cd\u8981\u6027\" href=\"https:\/\/www.railscarma.com\/ja\/%e3%83%96%e3%83%ad%e3%82%b0\/%e3%83%ad%e3%83%bc\/%e3%82%a8%e3%83%b3%e3%82%bf%e3%83%bc%e3%83%97%e3%83%a9%e3%82%a4%e3%82%ba%e3%83%bb%e3%82%bd%e3%83%95%e3%83%88%e3%82%a6%e3%82%a7%e3%82%a2%e9%96%8b%e7%99%ba%e3%81%ab%e3%81%8a%e3%81%91%e3%82%8b%e3%82%bd\/?related_post_from=36250\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/06\/Importance-of-Software-Architecture-in-enterprise-software-development.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"\u30a8\u30f3\u30bf\u30fc\u30d7\u30e9\u30a4\u30ba \u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u958b\u767a\u306b\u304a\u3051\u308b\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2 \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u91cd\u8981\u6027\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/06\/Importance-of-Software-Architecture-in-enterprise-software-development.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/06\/Importance-of-Software-Architecture-in-enterprise-software-development-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/06\/Importance-of-Software-Architecture-in-enterprise-software-development-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"\u30a8\u30f3\u30bf\u30fc\u30d7\u30e9\u30a4\u30ba \u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u958b\u767a\u306b\u304a\u3051\u308b\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2 \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u91cd\u8981\u6027\" href=\"https:\/\/www.railscarma.com\/ja\/%e3%83%96%e3%83%ad%e3%82%b0\/%e3%83%ad%e3%83%bc\/%e3%82%a8%e3%83%b3%e3%82%bf%e3%83%bc%e3%83%97%e3%83%a9%e3%82%a4%e3%82%ba%e3%83%bb%e3%82%bd%e3%83%95%e3%83%88%e3%82%a6%e3%82%a7%e3%82%a2%e9%96%8b%e7%99%ba%e3%81%ab%e3%81%8a%e3%81%91%e3%82%8b%e3%82%bd\/?related_post_from=36250\">\r\n        \u30a8\u30f3\u30bf\u30fc\u30d7\u30e9\u30a4\u30ba \u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u958b\u767a\u306b\u304a\u3051\u308b\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2 \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u91cd\u8981\u6027  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Ruby IDE: Ruby on Rails \u958b\u767a\u306b\u6700\u9069\u306a IDE\" href=\"https:\/\/www.railscarma.com\/ja\/%e3%83%96%e3%83%ad%e3%82%b0\/%e3%83%ad%e3%83%bc\/ruby-ide-ruby-on-rails-%e9%96%8b%e7%99%ba%e3%81%ab%e6%9c%80%e9%81%a9%e3%81%aa%e3%82%a2%e3%82%a4%e3%83%87%e3%82%a2\/?related_post_from=36125\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/01\/BEST-IDES-FOR-RUBY-ON-RAILS-DEVELOPMENT.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"Ruby on Rails \u958b\u767a\u306b\u6700\u9069\u306a\u30a2\u30a4\u30c7\u30a2\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/01\/BEST-IDES-FOR-RUBY-ON-RAILS-DEVELOPMENT.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/01\/BEST-IDES-FOR-RUBY-ON-RAILS-DEVELOPMENT-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/01\/BEST-IDES-FOR-RUBY-ON-RAILS-DEVELOPMENT-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Ruby IDE: Ruby on Rails \u958b\u767a\u306b\u6700\u9069\u306a IDE\" href=\"https:\/\/www.railscarma.com\/ja\/%e3%83%96%e3%83%ad%e3%82%b0\/%e3%83%ad%e3%83%bc\/ruby-ide-ruby-on-rails-%e9%96%8b%e7%99%ba%e3%81%ab%e6%9c%80%e9%81%a9%e3%81%aa%e3%82%a2%e3%82%a4%e3%83%87%e3%82%a2\/?related_post_from=36125\">\r\n        Ruby IDE: Ruby on Rails \u958b\u767a\u306b\u6700\u9069\u306a IDE  <\/a>\r\n\r\n        <\/div>\r\n      \r\n  <\/div>\r\n\r\n  <script>\r\n      <\/script>\r\n  <style>\r\n    .related-post {}\r\n\r\n    .related-post .post-list {\r\n      text-align: left;\r\n          }\r\n\r\n    .related-post .post-list .item {\r\n      margin: 10px;\r\n      padding: 10px;\r\n          }\r\n\r\n    .related-post .headline {\r\n      font-size: 14px !important;\r\n      color: #999999 !important;\r\n          }\r\n\r\n    .related-post .post-list .item .post_thumb {\r\n      max-height: 220px;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n          }\r\n\r\n    .related-post .post-list .item .post_title {\r\n      font-size: 14px;\r\n      color: #000000;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n      text-decoration: none;\r\n          }\r\n\r\n    .related-post .post-list .item .post_excerpt {\r\n      font-size: 12px;\r\n      color: #3f3f3f;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n      text-decoration: none;\r\n          }\r\n\r\n    .related-post .owl-dots .owl-dot {\r\n          }\r\n\r\n      <\/style>\r\n      <script>\r\n      jQuery(document).ready(function($) {\r\n        $(\".related-post .post-list\").owlCarousel({\r\n          items: 2,\r\n          responsiveClass: true,\r\n          responsive: {\r\n            0: {\r\n              items: 1,\r\n            },\r\n            768: {\r\n              items: 2,\r\n            },\r\n            1200: {\r\n              items: 2,\r\n            }\r\n          },\r\n                      rewind: true,\r\n                                loop: true,\r\n                                center: false,\r\n                                autoplay: true,\r\n            autoplayHoverPause: true,\r\n                                nav: true,\r\n            navSpeed: 1000,\r\n            navText: ['<i class=\"fas fa-chevron-left\"><\/i>', '<i class=\"fas fa-chevron-right\"><\/i>'],\r\n                                dots: false,\r\n            dotsSpeed: 1200,\r\n                                                    rtl: false,\r\n          \r\n        });\r\n      });\r\n    <\/script>\r\n  <\/div>","protected":false},"excerpt":{"rendered":"<p>\u306f\u3058\u3081\u306b Github: Decent Exposure Gem Decent Exposure \u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u3092\u7e70\u308a\u8fd4\u3059\u4ee3\u308f\u308a\u306b\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u5168\u4f53\u3067\u4f7f\u7528\u3067\u304d\u308b\u30a8\u30af\u30b9\u30dd\u30fc\u30ba\u30c9\u5909\u6570\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002\u516c\u958b\u3055\u308c\u305f\u5909\u6570\u306f\u30d3\u30e5\u30fc\u304b\u3089\u3082\u30a2\u30af\u30bb\u30b9\u3067\u304d\u3001\u7d50\u679c\u306e\u5024\u3092\u8a18\u61b6\u3057\u307e\u3059\u3002\u8a00\u3044\u63db\u3048\u308c\u3070\u3001\u3053\u308c\u306f\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3067\u5ba3\u8a00\u578b\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9\u3092\u4f5c\u6210\u3059\u308b\u305f\u3081\u306e\u30d8\u30eb\u30d1\u30fc\u3067\u3059\u3002\u3044\u304f\u3064\u304b\u306e\u30dd\u30a4\u30f3\u30c8 \u30ab\u30d7\u30bb\u30eb\u5316\u306e\u6539\u5584 \u30d3\u30e5\u30fc\u306e\u5909\u6570\u306f\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306e\u4e0a\u90e8\u306b\u8868\u793a\u53ef\u80fd Strong_parameters\u3001\u30c7\u30b3\u30ec\u30fc\u30bf\u3068\u306e\u4e92\u63db\u6027 \u30b3\u30fc\u30c9\u306e\u5302\u3044\u3092\u516c\u958b\u3057\u307e\u3059\u3002\u3053\u3061\u3089\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044: http:\/\/c2.com\/cgi\/wiki?CodeSmell Rails \u30a2\u30d7\u30ea\u3067\u9069\u5207\u306a\u9732\u51fa gem \u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306e\u30d2\u30f3\u30c8 gem &#039;decent_exposure&#039; \u3092 Gemfile \u306b\u8ffd\u52a0\u3057\u3001\u30d0\u30f3\u30c9\u30eb \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u304c detect_exposure \u3092\u4f7f\u7528\u3059\u308b\u65b9\u6cd5\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u3001\u9069\u5207\u306a\u9732\u51fa \u2026<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"https:\/\/www.railscarma.com\/ja\/%e3%83%96%e3%83%ad%e3%82%b0\/ruby-regex-match-guide-with-examples\/\"> <span class=\"screen-reader-text\">Ruby\u6b63\u898f\u8868\u73fe\u30de\u30c3\u30c1\u30ac\u30a4\u30c9\uff082026\uff09\u4f8b\u4ed8\u304d<\/span> \u3082\u3063\u3068\u8aad\u3080 \"<\/a><\/p>","protected":false},"author":1,"featured_media":31795,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[384],"tags":[],"class_list":["post-26462","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technical-articles"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Decent Exposure Gem - Goodbye to repeating instance variables - RailsCarma - Ruby on Rails Development Company specializing in Offshore Development<\/title>\n<meta name=\"description\" content=\"Introduction Github: Decent Exposure Gem Decent Exposure allows us to create\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.railscarma.com\/ja\/\u30d6\u30ed\u30b0\/\u6280\u8853\u8ad6\u6587\/decent-exposure-gem-goodbye-repeating-instance-variables\/\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Decent Exposure Gem - Goodbye to repeating instance variables - RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\" \/>\n<meta property=\"og:description\" content=\"Introduction Github: Decent Exposure Gem Decent Exposure allows us to create\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.railscarma.com\/ja\/\u30d6\u30ed\u30b0\/\u6280\u8853\u8ad6\u6587\/decent-exposure-gem-goodbye-repeating-instance-variables\/\" \/>\n<meta property=\"og:site_name\" content=\"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/RailsCarma\/\" \/>\n<meta property=\"article:published_time\" content=\"2017-03-13T11:14:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-10T12:54:32+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2017\/03\/Decent-Exposure-Gem.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@railscarma\" \/>\n<meta name=\"twitter:site\" content=\"@railscarma\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"2\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21\"},\"headline\":\"Decent Exposure Gem &#8211; Goodbye to repeating instance variables\",\"datePublished\":\"2017-03-13T11:14:19+00:00\",\"dateModified\":\"2024-01-10T12:54:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/\"},\"wordCount\":299,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.railscarma.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2017\/03\/Decent-Exposure-Gem.jpg\",\"articleSection\":[\"Technical Articles\"],\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/\",\"url\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/\",\"name\":\"Decent Exposure Gem - Goodbye to repeating instance variables - RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\",\"isPartOf\":{\"@id\":\"https:\/\/www.railscarma.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2017\/03\/Decent-Exposure-Gem.jpg\",\"datePublished\":\"2017-03-13T11:14:19+00:00\",\"dateModified\":\"2024-01-10T12:54:32+00:00\",\"description\":\"Introduction Github: Decent Exposure Gem Decent Exposure allows us to create\",\"breadcrumb\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#primaryimage\",\"url\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2017\/03\/Decent-Exposure-Gem.jpg\",\"contentUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2017\/03\/Decent-Exposure-Gem.jpg\",\"width\":800,\"height\":300},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.railscarma.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Decent Exposure Gem &#8211; Goodbye to repeating instance variables\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.railscarma.com\/#website\",\"url\":\"https:\/\/www.railscarma.com\/\",\"name\":\"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\",\"description\":\"RailsCarma is a Ruby on Rails Development Company in Bangalore. We specialize in Offshore Ruby on Rails Development based out in USA and India. Hire experienced Ruby on Rails developers for the ultimate Web Experience.\",\"publisher\":{\"@id\":\"https:\/\/www.railscarma.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.railscarma.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.railscarma.com\/#organization\",\"name\":\"RailsCarma\",\"url\":\"https:\/\/www.railscarma.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png\",\"contentUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png\",\"width\":200,\"height\":46,\"caption\":\"RailsCarma\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/RailsCarma\/\",\"https:\/\/x.com\/railscarma\",\"https:\/\/www.linkedin.com\/company\/railscarma\/\",\"https:\/\/myspace.com\/railscarma\",\"https:\/\/in.pinterest.com\/railscarma\/\",\"https:\/\/www.youtube.com\/channel\/UCx3Wil-aAnDARuatTEyMdpg\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"sameAs\":[\"https:\/\/www.railscarma.com\/hire-ruby-on-rails-developer\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Decent Exposure Gem - Goodbye to repeating instance variables - RailsCarma - Ruby on Rails Development Company specializing in Offshore Development","description":"Introduction Github: Decent Exposure Gem Decent Exposure allows us to create","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.railscarma.com\/ja\/\u30d6\u30ed\u30b0\/\u6280\u8853\u8ad6\u6587\/decent-exposure-gem-goodbye-repeating-instance-variables\/","og_locale":"ja_JP","og_type":"article","og_title":"Decent Exposure Gem - Goodbye to repeating instance variables - RailsCarma - Ruby on Rails Development Company specializing in Offshore Development","og_description":"Introduction Github: Decent Exposure Gem Decent Exposure allows us to create","og_url":"https:\/\/www.railscarma.com\/ja\/\u30d6\u30ed\u30b0\/\u6280\u8853\u8ad6\u6587\/decent-exposure-gem-goodbye-repeating-instance-variables\/","og_site_name":"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development","article_publisher":"https:\/\/www.facebook.com\/RailsCarma\/","article_published_time":"2017-03-13T11:14:19+00:00","article_modified_time":"2024-01-10T12:54:32+00:00","og_image":[{"width":800,"height":300,"url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2017\/03\/Decent-Exposure-Gem.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_creator":"@railscarma","twitter_site":"@railscarma","twitter_misc":{"\u57f7\u7b46\u8005":"admin","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"2\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#article","isPartOf":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/"},"author":{"name":"admin","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21"},"headline":"Decent Exposure Gem &#8211; Goodbye to repeating instance variables","datePublished":"2017-03-13T11:14:19+00:00","dateModified":"2024-01-10T12:54:32+00:00","mainEntityOfPage":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/"},"wordCount":299,"commentCount":0,"publisher":{"@id":"https:\/\/www.railscarma.com\/#organization"},"image":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#primaryimage"},"thumbnailUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2017\/03\/Decent-Exposure-Gem.jpg","articleSection":["Technical Articles"],"inLanguage":"ja","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/","url":"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/","name":"Decent Exposure Gem - Goodbye to repeating instance variables - RailsCarma - Ruby on Rails Development Company specializing in Offshore Development","isPartOf":{"@id":"https:\/\/www.railscarma.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#primaryimage"},"image":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#primaryimage"},"thumbnailUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2017\/03\/Decent-Exposure-Gem.jpg","datePublished":"2017-03-13T11:14:19+00:00","dateModified":"2024-01-10T12:54:32+00:00","description":"Introduction Github: Decent Exposure Gem Decent Exposure allows us to create","breadcrumb":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/"]}]},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#primaryimage","url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2017\/03\/Decent-Exposure-Gem.jpg","contentUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2017\/03\/Decent-Exposure-Gem.jpg","width":800,"height":300},{"@type":"BreadcrumbList","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/decent-exposure-gem-goodbye-repeating-instance-variables\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.railscarma.com\/"},{"@type":"ListItem","position":2,"name":"Decent Exposure Gem &#8211; Goodbye to repeating instance variables"}]},{"@type":"WebSite","@id":"https:\/\/www.railscarma.com\/#website","url":"https:\/\/www.railscarma.com\/","name":"RailsCarma - \u30aa\u30d5\u30b7\u30e7\u30a2\u958b\u767a\u306b\u7279\u5316\u3057\u305f Ruby on Rails \u958b\u767a\u4f1a\u793e","description":"RailsCarma \u306f\u30d0\u30f3\u30ac\u30ed\u30fc\u30eb\u306e Ruby on Rails \u958b\u767a\u4f1a\u793e\u3067\u3059\u3002\u5f53\u793e\u306f\u7c73\u56fd\u3068\u30a4\u30f3\u30c9\u3092\u62e0\u70b9\u3068\u3059\u308b\u30aa\u30d5\u30b7\u30e7\u30a2 Ruby on Rails \u958b\u767a\u3092\u5c02\u9580\u3068\u3057\u3066\u3044\u307e\u3059\u3002\u7d4c\u9a13\u8c4a\u5bcc\u306a Ruby on Rails \u958b\u767a\u8005\u3092\u96c7\u3063\u3066\u3001\u7a76\u6975\u306e Web \u30a8\u30af\u30b9\u30da\u30ea\u30a8\u30f3\u30b9\u3092\u5b9f\u73fe\u3057\u307e\u3057\u3087\u3046\u3002","publisher":{"@id":"https:\/\/www.railscarma.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.railscarma.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"},{"@type":"Organization","@id":"https:\/\/www.railscarma.com\/#organization","name":"\u30ec\u30fc\u30eb\u30ab\u30fc\u30de","url":"https:\/\/www.railscarma.com\/","logo":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png","contentUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png","width":200,"height":46,"caption":"RailsCarma"},"image":{"@id":"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/RailsCarma\/","https:\/\/x.com\/railscarma","https:\/\/www.linkedin.com\/company\/railscarma\/","https:\/\/myspace.com\/railscarma","https:\/\/in.pinterest.com\/railscarma\/","https:\/\/www.youtube.com\/channel\/UCx3Wil-aAnDARuatTEyMdpg"]},{"@type":"Person","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21","name":"\u7ba1\u7406\u8005","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g","caption":"admin"},"sameAs":["https:\/\/www.railscarma.com\/hire-ruby-on-rails-developer\/"]}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.railscarma.com\/ja\/wp-json\/wp\/v2\/posts\/26462","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.railscarma.com\/ja\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.railscarma.com\/ja\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/ja\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/ja\/wp-json\/wp\/v2\/comments?post=26462"}],"version-history":[{"count":0,"href":"https:\/\/www.railscarma.com\/ja\/wp-json\/wp\/v2\/posts\/26462\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/ja\/wp-json\/wp\/v2\/media\/31795"}],"wp:attachment":[{"href":"https:\/\/www.railscarma.com\/ja\/wp-json\/wp\/v2\/media?parent=26462"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.railscarma.com\/ja\/wp-json\/wp\/v2\/categories?post=26462"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.railscarma.com\/ja\/wp-json\/wp\/v2\/tags?post=26462"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}