{"id":7065,"date":"2014-07-09T14:36:59","date_gmt":"2014-07-09T11:36:59","guid":{"rendered":"http:\/\/railsware.com\/blog\/?p=7065"},"modified":"2021-08-12T12:58:02","modified_gmt":"2021-08-12T09:58:02","slug":"share-rails-configuration-to-javascript","status":"publish","type":"post","link":"https:\/\/railsware.com\/blog\/share-rails-configuration-to-javascript\/","title":{"rendered":"Share Rails configuration to Javascript"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The usual way of storing Rails configuration data are YAML files. In one of our previous posts, we talked about <a href=\"https:\/\/railsware.com\/blog\/rails-configuration-in-the-proper-way\/\">proper way of dealing with Rails configuration<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nowadays, Javascript applications built on top of RESTful API are common practice, and in cases like this configuration data might be duplicated across frontend and backend. We&#8217;ve faced this issue in our projects too and decided to extend our <a href=\"https:\/\/github.com\/railsware\/global\">global gem<\/a> to make access to Rails configuration from Javascript.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Installation<\/h2>\n\n\n\n<pre class=\"wp-block-preformatted lang:bash decode:true\">gem install global\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">or add the following line into <code class=\"\" data-line=\"\">Gemfile<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:ruby decode:true\">gem 'global', '~&gt; 0.1'\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Configuration<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In addition to default configuration variables:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:ruby decode:true\">Global.configure do |config|\n  config.environment = \"YOUR_ENV_HERE\"\n  config.config_directory = \"PATH_TO_DIRECTORY_WITH_FILES\"\nend\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">you should set values related to Javascript:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:ruby decode:true\">Global.configure do |config|\n  config.namespace = \"JAVASCRIPT_OBJECT_NAME\" # default Global\n  config.except = [\"LIST_OF_FILES_TO_EXCLUDE_ON_FRONT_END\"] # default :all\n  config.only = [\"LIST_OF_FILES_TO_INCLUDE_ON_FRONT_END\"] # default []\nend\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">All files are excluded by default due to security reasons.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">WARNING!!! Don not include files that contain protected information &#8211; like api keys or credentials &#8211; because they will be accessible from the Browser console.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Require global file in <code class=\"\" data-line=\"\">application.js<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:javascript decode:true\">\/*\n= require global-js\n*\/\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Advanced Configuration<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In case you need different configurations for different parts of your application, you should create files manually.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If your application has <code class=\"\" data-line=\"\">admin<\/code> and <code class=\"\" data-line=\"\">application<\/code> namespace:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:html decode:true\"># app\/assets\/javascripts\/admin\/global.js.erb\n&lt;%= Global.generate_js(namespace: \"AdminSettings\", only: %w(admin hosts)) %&gt;\n\n# app\/assets\/javascripts\/admin.js.coffee\n#= require admin\/global\n<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted lang:html decode:true\"># app\/assets\/javascripts\/application\/global.js.erb\n&lt;%= Global.generate_js(namespace: \"AppSettings\", except: %w(admin credentials)) %&gt;\n\n# app\/assets\/javascripts\/application.js.coffee\n#= require application\/global\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Usage<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For instance, you have config file <code class=\"\" data-line=\"\">global\/hosts.yml<\/code> with hosts settings for api and web:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:yaml decode:true\">development:\n  web: localhost\n  api: api.localhost\nproduction:\n  web: myhost.com\n  api: api.myhost.com\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">After that you have access to <code class=\"\" data-line=\"\">Global<\/code> Javascript object with settings from <code class=\"\" data-line=\"\">global\/hosts.yml<\/code> file:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:javascript decode:true\">Global.hosts.web\n=&gt; \"localhost\"\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">And in production environment:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:javascript decode:true\">Global.hosts.web\n=&gt; \"myhost.com\"\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">References<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For more details, check out the <a href=\"https:\/\/github.com\/railsware\/global\">source code and documentation on github<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The usual way of storing Rails configuration data are YAML files. In one of our previous posts, we talked about proper way of dealing with Rails configuration. Nowadays, Javascript applications built on top of RESTful API are common practice, and in cases like this configuration data might be duplicated across frontend and backend. We&#8217;ve faced&#8230;<\/p>\n","protected":false},"author":44,"featured_media":9465,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[3],"tags":[],"coauthors":["Olexander Paladiy"],"class_list":["post-7065","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development"],"acf":[],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"description\" content=\"How to share your Rails configuration across backend and frontend. It helps to avoid data duplication between Rails and Javascripy\" \/>\n\t<meta name=\"robots\" content=\"max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n\t<meta name=\"author\" content=\"Olexander Paladiy\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/railsware.com\/blog\/share-rails-configuration-to-javascript\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.9\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"| Blog on Engineering, Product Management, Transparency, Culture and many more...\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Share Rails configuration to Javascript | Railsware Blog\" \/>\n\t\t<meta property=\"og:description\" content=\"How to share your Rails configuration across backend and frontend. It helps to avoid data duplication between Rails and Javascripy\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/railsware.com\/blog\/share-rails-configuration-to-javascript\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2017\/12\/Share-Rails.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2017\/12\/Share-Rails.png\" \/>\n\t\t<meta property=\"og:image:width\" content=\"360\" \/>\n\t\t<meta property=\"og:image:height\" content=\"360\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2014-07-09T11:36:59+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2021-08-12T09:58:02+00:00\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/share-rails-configuration-to-javascript\\\/#article\",\"name\":\"Share Rails configuration to Javascript | Railsware Blog\",\"headline\":\"Share Rails configuration to Javascript\",\"author\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/olexander-paladiy\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/12\\\/Share-Rails.png\",\"width\":360,\"height\":360,\"caption\":\"Share Rails configuration to Javascript\"},\"datePublished\":\"2014-07-09T14:36:59+03:00\",\"dateModified\":\"2021-08-12T12:58:02+03:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/share-rails-configuration-to-javascript\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/share-rails-configuration-to-javascript\\\/#webpage\"},\"articleSection\":\"Engineering\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/share-rails-configuration-to-javascript\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/railsware.com\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/category\\\/development\\\/#listItem\",\"name\":\"Engineering\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/category\\\/development\\\/#listItem\",\"position\":2,\"name\":\"Engineering\",\"item\":\"https:\\\/\\\/railsware.com\\\/blog\\\/category\\\/development\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/share-rails-configuration-to-javascript\\\/#listItem\",\"name\":\"Share Rails configuration to Javascript\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/share-rails-configuration-to-javascript\\\/#listItem\",\"position\":3,\"name\":\"Share Rails configuration to Javascript\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/category\\\/development\\\/#listItem\",\"name\":\"Engineering\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#organization\",\"description\":\"Blog on Engineering, Product Management, Transparency, Culture and many more...\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/11\\\/Logo-circle.png\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/share-rails-configuration-to-javascript\\\/#organizationLogo\",\"width\":3137,\"height\":1054,\"caption\":\"Railsware logo\"},\"image\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/share-rails-configuration-to-javascript\\\/#organizationLogo\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/olexander-paladiy\\\/#author\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/olexander-paladiy\\\/\",\"name\":\"Olexander Paladiy\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/share-rails-configuration-to-javascript\\\/#authorImage\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/06\\\/olexander-paladiy-96x96.jpg\",\"width\":96,\"height\":96,\"caption\":\"Olexander Paladiy\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/share-rails-configuration-to-javascript\\\/#webpage\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/share-rails-configuration-to-javascript\\\/\",\"name\":\"Share Rails configuration to Javascript | Railsware Blog\",\"description\":\"How to share your Rails configuration across backend and frontend. It helps to avoid data duplication between Rails and Javascripy\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/share-rails-configuration-to-javascript\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/olexander-paladiy\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/olexander-paladiy\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/12\\\/Share-Rails.png\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/share-rails-configuration-to-javascript\\\/#mainImage\",\"width\":360,\"height\":360,\"caption\":\"Share Rails configuration to Javascript\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/share-rails-configuration-to-javascript\\\/#mainImage\"},\"datePublished\":\"2014-07-09T14:36:59+03:00\",\"dateModified\":\"2021-08-12T12:58:02+03:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/\",\"description\":\"Blog on Engineering, Product Management, Transparency, Culture and many more...\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Share Rails configuration to Javascript | Railsware Blog","description":"How to share your Rails configuration across backend and frontend. It helps to avoid data duplication between Rails and Javascripy","canonical_url":"https:\/\/railsware.com\/blog\/share-rails-configuration-to-javascript\/","robots":"max-snippet:-1, max-image-preview:large, max-video-preview:-1","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/railsware.com\/blog\/share-rails-configuration-to-javascript\/#article","name":"Share Rails configuration to Javascript | Railsware Blog","headline":"Share Rails configuration to Javascript","author":{"@id":"https:\/\/railsware.com\/blog\/author\/olexander-paladiy\/#author"},"publisher":{"@id":"https:\/\/railsware.com\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2017\/12\/Share-Rails.png","width":360,"height":360,"caption":"Share Rails configuration to Javascript"},"datePublished":"2014-07-09T14:36:59+03:00","dateModified":"2021-08-12T12:58:02+03:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/railsware.com\/blog\/share-rails-configuration-to-javascript\/#webpage"},"isPartOf":{"@id":"https:\/\/railsware.com\/blog\/share-rails-configuration-to-javascript\/#webpage"},"articleSection":"Engineering"},{"@type":"BreadcrumbList","@id":"https:\/\/railsware.com\/blog\/share-rails-configuration-to-javascript\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog#listItem","position":1,"name":"Home","item":"https:\/\/railsware.com\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/category\/development\/#listItem","name":"Engineering"}},{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/category\/development\/#listItem","position":2,"name":"Engineering","item":"https:\/\/railsware.com\/blog\/category\/development\/","nextItem":{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/share-rails-configuration-to-javascript\/#listItem","name":"Share Rails configuration to Javascript"},"previousItem":{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/share-rails-configuration-to-javascript\/#listItem","position":3,"name":"Share Rails configuration to Javascript","previousItem":{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/category\/development\/#listItem","name":"Engineering"}}]},{"@type":"Organization","@id":"https:\/\/railsware.com\/blog\/#organization","description":"Blog on Engineering, Product Management, Transparency, Culture and many more...","url":"https:\/\/railsware.com\/blog\/","logo":{"@type":"ImageObject","url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2020\/11\/Logo-circle.png","@id":"https:\/\/railsware.com\/blog\/share-rails-configuration-to-javascript\/#organizationLogo","width":3137,"height":1054,"caption":"Railsware logo"},"image":{"@id":"https:\/\/railsware.com\/blog\/share-rails-configuration-to-javascript\/#organizationLogo"}},{"@type":"Person","@id":"https:\/\/railsware.com\/blog\/author\/olexander-paladiy\/#author","url":"https:\/\/railsware.com\/blog\/author\/olexander-paladiy\/","name":"Olexander Paladiy","image":{"@type":"ImageObject","@id":"https:\/\/railsware.com\/blog\/share-rails-configuration-to-javascript\/#authorImage","url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2021\/06\/olexander-paladiy-96x96.jpg","width":96,"height":96,"caption":"Olexander Paladiy"}},{"@type":"WebPage","@id":"https:\/\/railsware.com\/blog\/share-rails-configuration-to-javascript\/#webpage","url":"https:\/\/railsware.com\/blog\/share-rails-configuration-to-javascript\/","name":"Share Rails configuration to Javascript | Railsware Blog","description":"How to share your Rails configuration across backend and frontend. It helps to avoid data duplication between Rails and Javascripy","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/railsware.com\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/railsware.com\/blog\/share-rails-configuration-to-javascript\/#breadcrumblist"},"author":{"@id":"https:\/\/railsware.com\/blog\/author\/olexander-paladiy\/#author"},"creator":{"@id":"https:\/\/railsware.com\/blog\/author\/olexander-paladiy\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2017\/12\/Share-Rails.png","@id":"https:\/\/railsware.com\/blog\/share-rails-configuration-to-javascript\/#mainImage","width":360,"height":360,"caption":"Share Rails configuration to Javascript"},"primaryImageOfPage":{"@id":"https:\/\/railsware.com\/blog\/share-rails-configuration-to-javascript\/#mainImage"},"datePublished":"2014-07-09T14:36:59+03:00","dateModified":"2021-08-12T12:58:02+03:00"},{"@type":"WebSite","@id":"https:\/\/railsware.com\/blog\/#website","url":"https:\/\/railsware.com\/blog\/","description":"Blog on Engineering, Product Management, Transparency, Culture and many more...","inLanguage":"en-US","publisher":{"@id":"https:\/\/railsware.com\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"| Blog on Engineering, Product Management, Transparency, Culture and many more...","og:type":"article","og:title":"Share Rails configuration to Javascript | Railsware Blog","og:description":"How to share your Rails configuration across backend and frontend. It helps to avoid data duplication between Rails and Javascripy","og:url":"https:\/\/railsware.com\/blog\/share-rails-configuration-to-javascript\/","og:image":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2017\/12\/Share-Rails.png","og:image:secure_url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2017\/12\/Share-Rails.png","og:image:width":360,"og:image:height":360,"article:published_time":"2014-07-09T11:36:59+00:00","article:modified_time":"2021-08-12T09:58:02+00:00"},"aioseo_meta_data":{"post_id":"7065","title":"Share Rails configuration to Javascript | Railsware Blog","description":"How to share your Rails configuration across backend and frontend. It helps to avoid data duplication between Rails and Javascripy","keywords":[],"keyphrases":{"focus":[],"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":[],"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":{"id":"aioseo-article-6385f75aed3d6","slug":"article","graphName":"Article","label":"Article","properties":{"type":"BlogPosting","name":"#post_title","headline":"#post_title","description":"#post_excerpt","image":"","keywords":"","author":{"name":"#author_name","url":"#author_url"},"dates":{"include":true,"datePublished":"","dateModified":""}}},"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":"{\"article\":{\"articleType\":\"BlogPosting\"},\"course\":{\"name\":\"\",\"description\":\"\",\"provider\":\"\"},\"faq\":{\"pages\":[]},\"product\":{\"reviews\":[]},\"recipe\":{\"ingredients\":[],\"instructions\":[],\"keywords\":[]},\"software\":{\"reviews\":[],\"operatingSystems\":[]},\"webPage\":{\"webPageType\":\"WebPage\"}}","pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","location":null,"local_seo":{"locations":{"business":{"name":"","businessType":"","image":"","areaServed":"","urls":{"website":"","aboutPage":"","contactPage":""},"address":{"streetLine1":"","streetLine2":"","zipCode":"","city":"","state":"","country":"","addressFormat":"#streetLineOne\n#streetLineTwo\n#city, #state #zipCode"},"contact":{"email":"","phone":"","phoneFormatted":"","fax":"","faxFormatted":""},"ids":{"vat":"","tax":"","chamberOfCommerce":""},"payment":{"priceRange":"","currenciesAccepted":"","methods":""}}},"openingHours":{"useDefaults":true,"show":true,"alwaysOpen":false,"use24hFormat":false,"timezone":"","labels":{"closed":"","alwaysOpen":""},"days":{"monday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"tuesday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"wednesday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"thursday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"friday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"saturday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"sunday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"}}}},"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2021-01-04 12:44:30","updated":"2025-09-26 11:21:39","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/railsware.com\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/railsware.com\/blog\/category\/development\/\" title=\"Engineering\">Engineering<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tShare Rails configuration to Javascript\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/railsware.com\/blog"},{"label":"Engineering","link":"https:\/\/railsware.com\/blog\/category\/development\/"},{"label":"Share Rails configuration to Javascript","link":"https:\/\/railsware.com\/blog\/share-rails-configuration-to-javascript\/"}],"categories_data":[{"name":"Engineering","link":"https:\/\/railsware.com\/blog?category=development"}],"post_thumbnails":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2017\/12\/Share-Rails.png","article_background":"","amp_enabled":true,"_links":{"self":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts\/7065","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/users\/44"}],"replies":[{"embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/comments?post=7065"}],"version-history":[{"count":37,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts\/7065\/revisions"}],"predecessor-version":[{"id":13956,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts\/7065\/revisions\/13956"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/media\/9465"}],"wp:attachment":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/media?parent=7065"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/categories?post=7065"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/tags?post=7065"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/coauthors?post=7065"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}