{"id":48357,"date":"2013-02-15T13:55:45","date_gmt":"2013-02-15T10:55:45","guid":{"rendered":"https:\/\/www.altoros.com\/blog\/?p=48357"},"modified":"2021-12-10T11:37:40","modified_gmt":"2021-12-10T08:37:40","slug":"environment-variables-in-rails","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/environment-variables-in-rails\/","title":{"rendered":"Environment Variables in Ruby on Rails"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.altoros.com\/blog\/environment-variables-in-rails\/#Looking_for_ways_to_define_variables\" >Looking for ways to define variables<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.altoros.com\/blog\/environment-variables-in-rails\/#The_solution\" >The solution<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.altoros.com\/blog\/environment-variables-in-rails\/#Further_reading\" >Further reading<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.altoros.com\/blog\/environment-variables-in-rails\/#About_the_author\" >About the author<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Looking_for_ways_to_define_variables\"><\/span>Looking for ways to define variables<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>When you see configuration examples in README files of gems as shown below, what do you think they are?<\/p>\n<figure class=\"highlight\">\n<pre><code class=\"language-ruby\" data-lang=\"ruby\"><span class=\"no\">AssetSync<\/span><span class=\"p\">.<\/span><span class=\"nf\">configure<\/span> <span class=\"k\">do<\/span> <span class=\"o\">|<\/span><span class=\"n\">config<\/span><span class=\"o\">|<\/span>\r\n  <span class=\"n\">config<\/span><span class=\"p\">.<\/span><span class=\"nf\">fog_provider<\/span> <span class=\"o\">=<\/span> <span class=\"s1\">'AWS'<\/span>\r\n  <span class=\"n\">config<\/span><span class=\"p\">.<\/span><span class=\"nf\">fog_directory<\/span> <span class=\"o\">=<\/span> <span class=\"no\">ENV<\/span><span class=\"p\">[<\/span><span class=\"s1\">'FOG_DIRECTORY'<\/span><span class=\"p\">]<\/span>\r\n  <span class=\"n\">config<\/span><span class=\"p\">.<\/span><span class=\"nf\">aws_access_key_id<\/span> <span class=\"o\">=<\/span> <span class=\"no\">ENV<\/span><span class=\"p\">[<\/span><span class=\"s1\">'AWS_ACCESS_KEY_ID'<\/span><span class=\"p\">]<\/span>\r\n  <span class=\"n\">config<\/span><span class=\"p\">.<\/span><span class=\"nf\">aws_secret_access_key<\/span> <span class=\"o\">=<\/span> <span class=\"no\">ENV<\/span><span class=\"p\">[<\/span><span class=\"s1\">'AWS_SECRET_ACCESS_KEY'<\/span><span class=\"p\">]<\/span>\r\n\r\n  <span class=\"c1\"># Don't delete files from the store<\/span>\r\n  <span class=\"c1\"># config.existing_remote_files = \"keep\"<\/span>\r\n  <span class=\"c1\">#<\/span>\r\n  <span class=\"c1\"># Increase upload performance by configuring your region<\/span>\r\n  <span class=\"c1\"># config.fog_region = 'eu-west-1'<\/span>\r\n  <span class=\"c1\">#<\/span>\r\n  <span class=\"c1\"># Automatically replace files with their equivalent gzip compressed version<\/span>\r\n  <span class=\"c1\"># config.gzip_compression = true<\/span>\r\n  <span class=\"c1\">#<\/span>\r\n  <span class=\"c1\"># Use the Rails generated 'manifest.yml' file to produce the list of files to<\/span>\r\n  <span class=\"c1\"># upload instead of searching the assets directory.<\/span>\r\n  <span class=\"c1\"># config.manifest = true<\/span>\r\n  <span class=\"c1\">#<\/span>\r\n  <span class=\"c1\"># Fail silently.  Useful for environments such as Heroku<\/span>\r\n  <span class=\"c1\"># config.fail_silently = true<\/span>\r\n<span class=\"k\">end<\/span><\/code><\/pre>\n<\/figure>\n<p>Where should you define <code style=\"color: black; background-color: #e6e6e6;\">ENV['FOG_DIRECTORY']<\/code>? Should you define it in a shell script (such as <code style=\"color: black; background-color: #e6e6e6;\">~\/.bashrc<\/code>, <code style=\"color: black; background-color: #e6e6e6;\">~\/.bash_profile<\/code>, <code style=\"color: black; background-color: #e6e6e6;\">~\/.profile<\/code>, etc.) or in <code style=\"color: black; background-color: #e6e6e6;\">\/etc\/environment<\/code>? If you think so, I have to disappoint you\u2014you are wrong!<\/p>\n<p>Let\u2019s define the <code style=\"color: black; background-color: #e6e6e6;\">FOG_DIRECTORY<\/code> variable in the <code style=\"color: black; background-color: #e6e6e6;\">~\/.bashrc<\/code> file. Pay attention if <code style=\"color: black; background-color: #e6e6e6;\">~\/.bashrc<\/code> includes the <code style=\"color: black; background-color: #e6e6e6;\">[ -z \"$PS1\" ] &amp;&amp; return<\/code> line, otherwise you have to define the variables above it.<\/p>\n<figure class=\"highlight\">\n<pre><code class=\"language-bash\" data-lang=\"bash\"><span class=\"nb\">export <\/span><span class=\"nv\">FOG_DIRECTORY<\/span><span class=\"o\">=<\/span>my-bucket-name<\/code><\/pre>\n<\/figure>\n<p>Then, reboot the shell and start a Ruby-on-Rails app. You will see that the app is configured correctly. You enjoy it and are going to deploy the app to production on VPS or VDS the same way. Everything is expected to work before the first reboot. Why <code style=\"color: black; background-color: #e6e6e6;\">ENV['FOG_DIRECTORY']<\/code> is <code style=\"color: black; background-color: #e6e6e6;\">nil<\/code> after server reboot? The answer is simple\u2014<a href=\"http:\/\/nginx.org\/\" rel=\"noopener noreferrer\" target=\"_blank\">nginx<\/a> or another web server (I don\u2019t know which one you use, but I prefer using nginx) starts before evaluating <code style=\"color: black; background-color: #e6e6e6;\">~\/.bashrc<\/code> and even <code style=\"color: black; background-color: #e6e6e6;\">\/etc\/environment<\/code>.<\/p>\n<p>If you use <a href=\"https:\/\/github.com\/AssetSync\/asset_sync\" rel=\"noopener noreferrer\" target=\"_blank\">assets_sync<\/a> to upload your assets to the cloud, you can have an issue with <a href=\"https:\/\/github.com\/capistrano\/capistrano\" rel=\"noopener noreferrer\" target=\"_blank\">Capistrano<\/a> during deployment.<\/p>\n<div style=\"color: black; background-color: #e6e6e6;\">\n<div class=\"highlight\">\n<pre class=\"highlight\"><code>AssetSync: using default configuration from built-in initializer\r\nrake aborted!\r\nFog provider can't be blank, Fog directory can't be blank\r\n\r\nTasks: TOP =&gt; assets:precompile:nondigest\r\n(See full trace by running task with --trace)\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<p>So, we have to look for another way how to define these variables.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"The_solution\"><\/span>The solution<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Considering the problem above, there is a reasonable question: what are these variables in the config and what to do? How should we define these variables? While surfing the Internet, I\u2019ve found a good <a href=\"http:\/\/railsapps.github.com\/rails-environment-variables.html\" rel=\"noopener noreferrer\" target=\"_blank\">article<\/a> that explains scenarios how to achieve our goals. Now, I will describe the scenario I think is much simpler and faster than others.<\/p>\n<p>Insert the following lines of code to <code style=\"color: black; background-color: #e6e6e6;\">config\/application.rb<\/code> after the <code style=\"color: black; background-color: #e6e6e6;\">config.assets.version = '1.0'<\/code> line.<\/p>\n<figure class=\"highlight\">\n<pre><code class=\"language-ruby\" data-lang=\"ruby\"><span class=\"n\">config<\/span><span class=\"p\">.<\/span><span class=\"nf\">before_configuration<\/span> <span class=\"k\">do<\/span>\r\n  <span class=\"n\">env_file<\/span> <span class=\"o\">=<\/span> <span class=\"no\">File<\/span><span class=\"p\">.<\/span><span class=\"nf\">join<\/span><span class=\"p\">(<\/span><span class=\"no\">Rails<\/span><span class=\"p\">.<\/span><span class=\"nf\">root<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'config'<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'local_env.yml'<\/span><span class=\"p\">)<\/span>\r\n  <span class=\"no\">YAML<\/span><span class=\"p\">.<\/span><span class=\"nf\">load<\/span><span class=\"p\">(<\/span><span class=\"no\">File<\/span><span class=\"p\">.<\/span><span class=\"nf\">open<\/span><span class=\"p\">(<\/span><span class=\"n\">env_file<\/span><span class=\"p\">)).<\/span><span class=\"nf\">each<\/span> <span class=\"k\">do<\/span> <span class=\"o\">|<\/span><span class=\"n\">key<\/span><span class=\"p\">,<\/span> <span class=\"n\">value<\/span><span class=\"o\">|<\/span>\r\n    <span class=\"no\">ENV<\/span><span class=\"p\">[<\/span><span class=\"n\">key<\/span><span class=\"p\">.<\/span><span class=\"nf\">to_s<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">value<\/span>\r\n  <span class=\"k\">end<\/span> <span class=\"k\">if<\/span> <span class=\"no\">File<\/span><span class=\"p\">.<\/span><span class=\"nf\">exists?<\/span><span class=\"p\">(<\/span><span class=\"n\">env_file<\/span><span class=\"p\">)<\/span>\r\n<span class=\"k\">end<\/span><\/code><\/pre>\n<\/figure>\n<p>Now, you have to create the <code style=\"color: black; background-color: #e6e6e6;\">yml<\/code> file in the <code style=\"color: black; background-color: #e6e6e6;\">config<\/code> folder and add it to <code style=\"color: black; background-color: #e6e6e6;\">.gitignore<\/code> if you have to define these variables locally. Key values are not real, so it doesn\u2019t make sense to paste them in your configuration files. The example of <code style=\"color: black; background-color: #e6e6e6;\">config\/local_env.yml<\/code> is shown below.<\/p>\n<figure class=\"highlight\">\n<pre><code class=\"language-yaml\" data-lang=\"yaml\"><span class=\"na\">FOG_PROVIDER<\/span><span class=\"pi\">:<\/span> <span class=\"s\">AWS<\/span>\r\n<span class=\"na\">FOG_DIRECTORY<\/span><span class=\"pi\">:<\/span> <span class=\"s\">my-bycket-name<\/span>\r\n<span class=\"na\">AWS_ACCESS_KEY_ID<\/span><span class=\"pi\">:<\/span> <span class=\"s\">ASFAWFSFDGSDEQWEFGD<\/span>\r\n<span class=\"na\">AWS_SECRET_ACCESS_KEY<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Afsdgd35gSFsdgSDF46GDSG4ghdf356<\/span>\r\n<span class=\"na\">FOG_REGION<\/span><span class=\"pi\">:<\/span> <span class=\"s\">eu-west-1<\/span><\/code><\/pre>\n<\/figure>\n<p>Finally, if we deploy the app with Capistrano, we have to deploy it properly. We should put <code style=\"color: black; background-color: #e6e6e6;\">local_env.yml<\/code> to the <code style=\"color: black; background-color: #e6e6e6;\">Capistrano<\/code> shared folder on the server and change <code style=\"color: black; background-color: #e6e6e6;\">config\/deploy.rb<\/code> as exemplified below.<\/p>\n<figure class=\"highlight\">\n<pre><code class=\"language-ruby\" data-lang=\"ruby\"><span class=\"n\">before<\/span> <span class=\"s1\">'deploy:assets:precompile'<\/span><span class=\"p\">,<\/span> <span class=\"ss\">:symlink_config_files<\/span>\r\n\r\n<span class=\"n\">desc<\/span> <span class=\"s2\">\"Link shared files\"<\/span>\r\n<span class=\"n\">task<\/span> <span class=\"ss\">:symlink_config_files<\/span> <span class=\"k\">do<\/span>\r\n  <span class=\"n\">symlinks<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"s2\">\"<\/span><span class=\"si\">#{<\/span><span class=\"n\">shared_path<\/span><span class=\"si\">}<\/span><span class=\"s2\">\/config\/database.yml\"<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"s2\">\"<\/span><span class=\"si\">#{<\/span><span class=\"n\">release_path<\/span><span class=\"si\">}<\/span><span class=\"s2\">\/config\/database.yml\"<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"s2\">\"<\/span><span class=\"si\">#{<\/span><span class=\"n\">shared_path<\/span><span class=\"si\">}<\/span><span class=\"s2\">\/config\/local_env.yml\"<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"s2\">\"<\/span><span class=\"si\">#{<\/span><span class=\"n\">release_path<\/span><span class=\"si\">}<\/span><span class=\"s2\">\/config\/local_env.yml\"<\/span>\r\n  <span class=\"p\">}<\/span>\r\n  <span class=\"n\">run<\/span> <span class=\"n\">symlinks<\/span><span class=\"p\">.<\/span><span class=\"nf\">map<\/span><span class=\"p\">{<\/span><span class=\"o\">|<\/span><span class=\"n\">from<\/span><span class=\"p\">,<\/span> <span class=\"n\">to<\/span><span class=\"o\">|<\/span> <span class=\"s2\">\"ln -nfs <\/span><span class=\"si\">#{<\/span><span class=\"n\">from<\/span><span class=\"si\">}<\/span><span class=\"s2\"> <\/span><span class=\"si\">#{<\/span><span class=\"n\">to<\/span><span class=\"si\">}<\/span><span class=\"s2\">\"<\/span><span class=\"p\">}.<\/span><span class=\"nf\">join<\/span><span class=\"p\">(<\/span><span class=\"s2\">\" &amp;&amp; \"<\/span><span class=\"p\">)<\/span>\r\n<span class=\"k\">end<\/span><\/code><\/pre>\n<\/figure>\n<p>It is assumed that <code style=\"color: black; background-color: #e6e6e6;\">local_env.yml<\/code> exists in the <code style=\"color: black; background-color: #e6e6e6;\">{shared_path}\/config\/<\/code> folder on the server.<\/p>\n<p>You have just explored how I\u2019ve done the same thing with my <code style=\"color: black; background-color: #e6e6e6;\">database.yml<\/code> config (by the way, ignoring the <code style=\"color: black; background-color: #e6e6e6;\">database.yml<\/code> in your <a href=\"https:\/\/en.wikipedia.org\/wiki\/Concurrent_Versions_System\" rel=\"noopener noreferrer\" target=\"_blank\">concurrent version system<\/a> is a best practice, as well). The real-world example can be found in the README file of the awesome <a href=\"https:\/\/github.com\/AssetSync\/asset_sync\" rel=\"noopener noreferrer\" target=\"_blank\">assets_sync<\/a> gem.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Further_reading\"><\/span>Further reading<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/websocket-rails-gem\/\">WebSocket for a Ruby-on-Rails App<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/commonjs-for-rails\/\">CommonJS for Ruby on Rails<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/s3-storage-for-your-rails-application\/\">Amazon S3 for Your Ruby-on-Rails App<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"About_the_author\"><\/span>About the author<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2013\/02\/andrei-kaleshka.png\" width=\"110\" class=\"alignright size-thumbnail wp-image-64162\" \/><\/p>\n<p><small><a href=\"https:\/\/www.linkedin.com\/in\/ka8725\/\" rel=\"noopener noreferrer\" target=\"_blank\">Andrey Koleshko<\/a> is a Ruby developer at Altoros. He is majoring in delivering payment gateway solutions, as well as systems for billing, invoicing, subscriptions, bookkeeping, and accounting. Find him on <a href=\"https:\/\/github.com\/ka8725\" rel=\"noopener noreferrer\" target=\"_blank\">GitHub<\/a>.<\/small><\/p>\n","protected":false},"excerpt":{"rendered":"<p>How to define environment variables in Rails<\/p>\n","protected":false},"author":34,"featured_media":58462,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[214],"tags":[1000,895],"class_list":["post-48357","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-github","tag-research-and-development"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Environment Variables in Ruby on Rails | Altoros<\/title>\n<meta name=\"description\" content=\"This blog post provides instructions on how to define environment variables in a Ruby-on-Rails app.\" \/>\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.altoros.com\/blog\/environment-variables-in-rails\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Environment Variables in Ruby on Rails | Altoros\" \/>\n<meta property=\"og:description\" content=\"How to define environment variables in Rails\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/environment-variables-in-rails\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2013-02-15T10:55:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-12-10T08:37:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2013\/02\/environment-variables-in-ruby-on-rails-featured-image.gif\" \/>\n\t<meta property=\"og:image:width\" content=\"1133\" \/>\n\t<meta property=\"og:image:height\" content=\"615\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/gif\" \/>\n<meta name=\"author\" content=\"Alena Vasilenko\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alena Vasilenko\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/environment-variables-in-rails\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/environment-variables-in-rails\\\/\"},\"author\":{\"name\":\"Alena Vasilenko\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#\\\/schema\\\/person\\\/019e8147b835bc8f1b4abd8a4fa42c7f\"},\"headline\":\"Environment Variables in Ruby on Rails\",\"datePublished\":\"2013-02-15T10:55:45+00:00\",\"dateModified\":\"2021-12-10T08:37:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/environment-variables-in-rails\\\/\"},\"wordCount\":453,\"commentCount\":4,\"image\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/environment-variables-in-rails\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2013\\\/02\\\/environment-variables-in-ruby-on-rails-featured-image.gif\",\"keywords\":[\"GitHub\",\"Research and Development\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.altoros.com\\\/blog\\\/environment-variables-in-rails\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/environment-variables-in-rails\\\/\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/environment-variables-in-rails\\\/\",\"name\":\"Environment Variables in Ruby on Rails | Altoros\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/environment-variables-in-rails\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/environment-variables-in-rails\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2013\\\/02\\\/environment-variables-in-ruby-on-rails-featured-image.gif\",\"datePublished\":\"2013-02-15T10:55:45+00:00\",\"dateModified\":\"2021-12-10T08:37:40+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#\\\/schema\\\/person\\\/019e8147b835bc8f1b4abd8a4fa42c7f\"},\"description\":\"How to define environment variables in Rails\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/environment-variables-in-rails\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.altoros.com\\\/blog\\\/environment-variables-in-rails\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/environment-variables-in-rails\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2013\\\/02\\\/environment-variables-in-ruby-on-rails-featured-image.gif\",\"contentUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2013\\\/02\\\/environment-variables-in-ruby-on-rails-featured-image.gif\",\"width\":1133,\"height\":615},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/environment-variables-in-rails\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Environment Variables in Ruby on Rails\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/\",\"name\":\"Altoros\",\"description\":\"Insight\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#\\\/schema\\\/person\\\/019e8147b835bc8f1b4abd8a4fa42c7f\",\"name\":\"Alena Vasilenko\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/06\\\/alena-vasilenko-author-e1561752194994-96x96.jpg\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/06\\\/alena-vasilenko-author-e1561752194994-96x96.jpg\",\"contentUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/06\\\/alena-vasilenko-author-e1561752194994-96x96.jpg\",\"caption\":\"Alena Vasilenko\"},\"description\":\"Alena Vasilenko is Communications Manager at Altoros. She has proven track record of supporting R&amp;D engineers in their research activities on such topics as big data and cloud computing, translating the research results into easy-to-understand stories.\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/author\\\/alena-vasilenko\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Environment Variables in Ruby on Rails | Altoros","description":"This blog post provides instructions on how to define environment variables in a Ruby-on-Rails app.","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.altoros.com\/blog\/environment-variables-in-rails\/","og_locale":"en_US","og_type":"article","og_title":"Environment Variables in Ruby on Rails | Altoros","og_description":"How to define environment variables in Rails","og_url":"https:\/\/www.altoros.com\/blog\/environment-variables-in-rails\/","og_site_name":"Altoros","article_published_time":"2013-02-15T10:55:45+00:00","article_modified_time":"2021-12-10T08:37:40+00:00","og_image":[{"width":1133,"height":615,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2013\/02\/environment-variables-in-ruby-on-rails-featured-image.gif","type":"image\/gif"}],"author":"Alena Vasilenko","twitter_misc":{"Written by":"Alena Vasilenko","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.altoros.com\/blog\/environment-variables-in-rails\/#article","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/environment-variables-in-rails\/"},"author":{"name":"Alena Vasilenko","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/019e8147b835bc8f1b4abd8a4fa42c7f"},"headline":"Environment Variables in Ruby on Rails","datePublished":"2013-02-15T10:55:45+00:00","dateModified":"2021-12-10T08:37:40+00:00","mainEntityOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/environment-variables-in-rails\/"},"wordCount":453,"commentCount":4,"image":{"@id":"https:\/\/www.altoros.com\/blog\/environment-variables-in-rails\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2013\/02\/environment-variables-in-ruby-on-rails-featured-image.gif","keywords":["GitHub","Research and Development"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.altoros.com\/blog\/environment-variables-in-rails\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.altoros.com\/blog\/environment-variables-in-rails\/","url":"https:\/\/www.altoros.com\/blog\/environment-variables-in-rails\/","name":"Environment Variables in Ruby on Rails | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/environment-variables-in-rails\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/environment-variables-in-rails\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2013\/02\/environment-variables-in-ruby-on-rails-featured-image.gif","datePublished":"2013-02-15T10:55:45+00:00","dateModified":"2021-12-10T08:37:40+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/019e8147b835bc8f1b4abd8a4fa42c7f"},"description":"How to define environment variables in Rails","breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/environment-variables-in-rails\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/environment-variables-in-rails\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/environment-variables-in-rails\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2013\/02\/environment-variables-in-ruby-on-rails-featured-image.gif","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2013\/02\/environment-variables-in-ruby-on-rails-featured-image.gif","width":1133,"height":615},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/environment-variables-in-rails\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Environment Variables in Ruby on Rails"}]},{"@type":"WebSite","@id":"https:\/\/www.altoros.com\/blog\/#website","url":"https:\/\/www.altoros.com\/blog\/","name":"Altoros","description":"Insight","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.altoros.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/019e8147b835bc8f1b4abd8a4fa42c7f","name":"Alena Vasilenko","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/06\/alena-vasilenko-author-e1561752194994-96x96.jpg","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/06\/alena-vasilenko-author-e1561752194994-96x96.jpg","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/06\/alena-vasilenko-author-e1561752194994-96x96.jpg","caption":"Alena Vasilenko"},"description":"Alena Vasilenko is Communications Manager at Altoros. She has proven track record of supporting R&amp;D engineers in their research activities on such topics as big data and cloud computing, translating the research results into easy-to-understand stories.","url":"https:\/\/www.altoros.com\/blog\/author\/alena-vasilenko\/"}]}},"_links":{"self":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/48357","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/users\/34"}],"replies":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/comments?post=48357"}],"version-history":[{"count":16,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/48357\/revisions"}],"predecessor-version":[{"id":65347,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/48357\/revisions\/65347"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media\/58462"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=48357"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=48357"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=48357"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}