为什么我的 Rails 初始化程序在控制台中缓存 ENV 变量(Foreman、Dev env)

2024-01-06

起初的小烦恼现在变成了令人头痛的事情。我正在构建一个 Rails 4 应用程序,并使用 Foreman 进行开发设置,并使用 Procfile 和 .env 文件进行配置。当我在 .env 文件中设置 ENV 变量时,我的应用程序会正确拾取它。在本例中,我在初始化程序中为 Paperclip 设置一些 ENV 选项。

当我去更改 ENV 变量的值时,问题就出现了。在控制台中,如果我输入 ENV["MY_VAR"],它会显示新值。但是,我的初始化程序中使用的值(大概是在我启动控制台时运行的)显示了旧值!我的项目中没有任何地方列出旧值。这让我相信环境正在以某种方式被缓存,或者环境变量正在导出到我的 shell。我已经没有地方可看了,所以任何帮助将不胜感激!我正在 Mac (10.9.4) 上使用 Ruby 1.9.3-p374 和 Rails 4.1.0 进行开发。

Example:

根/.env

S3_BUCKET=mybucket

配置/初始化程序/paperclip.rb

Paperclip::Attachment.default_options[:s3_credentials] = {bucket: ENV["S3_BUCKET"]}

如果我将 S3_BUCKET 的值更改为“newbucket”并运行“foreman run Rails c”或“rails c”进入控制台,则会发生以下情况:

ENV["S3_BUCKET"] # => "newbucket"
Paperclip::Attachment.default_options[:s3_credentials] # => {bucket: 'mybucket'}

我应该提到这种行为也发生在我放入 /lib 的类中。我想这都是由于我忽略了一些愚蠢的事情造成的。有任何想法吗?


如果您开箱即用 Rails 4,它会附带一个名为的 gemSpring https://github.com/rails/spring that's intended通过在后台预加载应用程序实例并在代码和配置文件更改时重新加载它,使您的生活更轻松。

然而,Spring 仅监视 Rails 的默认配置文件,因此您需要配置 Spring 来监视您希望触发重新加载的其他任何文件。

春天读~/.spring.rb and config/spring.rb用于自定义设置。您可以将以下行添加到您选择的文件中以观看您的.env更改文件:

Spring.watch '.env'

See Spring的配置文档 https://github.com/rails/spring#configuration在自述文件中了解更多信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我的 Rails 初始化程序在控制台中缓存 ENV 变量(Foreman、Dev env) 的相关文章

  • 在代码中的其他地方设计渲染符号=>向上/形式部分

    我刚刚开始使用 Devise 和 Rails3 我已经完成了身份验证并正在工作并了解基础知识 截至目前 在代表我的主页 首页的主控制器中 我有两个链接 一个链接到 注册 gt sign up 另一个链接根据登录 注销 gt sign in
  • 如何在 Rails 6 中禁用 TurboLinks?

    所以我面临这个问题 我的服务器实际上从客户端的请求中检索了正确的数据 并将这些数据发送到浏览器 我可以清楚地看到它可用于浏览器 CTRL SHIFT C gt Network gt my request 但是 浏览器不会刷新 所以我现在看到
  • 用于 RESTful 轨道应用程序的简单面包屑

    是否有任何辅助方法 除了默认 Rails 面包屑导航 http wiki rubyonrails org rails pages Breadcrumbs 为特定页面动态生成面包屑导航 而无需在 RESTful 应用程序中传递琐碎的参数 也就
  • 从部分重定向回具有部分的同一页面后保留验证错误

    因此 我试图从我的表单中获取错误 该表单在我的 root path 中呈现为部分内容 在我尝试发布它但失败 或成功 后 我想重定向回 root path 但是 redirect to 决定不保存任何验证信息 想知道如何做到这一点 class
  • Rails:关于产量

    我在a中看到了一些代码导轨 v2 3 app In layout car general html erb 这个视图是由 cars controller 中的方法调用的 我看到了代码 var some car new Object 有两个问
  • 设备注册控制器获取零资源的自定义操作

    基本上我想要有两个单独的操作来更改密码和更改电子邮件 而不是只有一个 我已经更新了我的路由以指向继承自 Devise RegistrationsController 的新控制器 我的路线 rb devise for users contro
  • HABTM 关系和accepts_nested_attributes_for

    我有一个可以让我创建的表单新博客文章我希望能够创造新类别来自同一个表格 我在帖子和类别之间有一个习惯关系 这就是我遇到麻烦的原因 我有以下2个型号 class Post lt ActiveRecord Base has and belong
  • 数据库分片和 Rails

    在 Rails 中处理分片数据库的最佳方法是什么 分片应该在应用层 活动记录层 数据库驱动层 代理层还是其他层处理 各自的优点和缺点是什么 FiveRuns 有一个名为的 gem数据结构 https github com bpot data
  • kaminari ajax 分页不更新分页

    我正在使用 kaminari gem 在 Rails3 中实现分页 我一直在关注github上的这段代码https github com amatsuda kaminari example commits ajax https github
  • 使用复选框过滤列表

    我有一个电影列表及其评级 在我的页面顶部 我有一个表单 其中提供了一个复选框列表 其中显示了每个可用的评级 G PG 13 等 一旦用户单击复选框并点击提交 我只想显示所选的电影 在我的索引方法中 我有一个名为的实例变量 filtered
  • 如何在C#中读取用户环境变量?

    如何读取用户特定的环境变量 我知道如何获得系统范围的一个 例如 Environment GetEnvironmentVariable SOMETHING 提前致谢 使用其他重载Environment GetEnvironmentVariab
  • 在 CircleCI 中设置 Elasticsearch 和 Ruby on Rails

    我正在尝试在 Rails 应用程序中使用 Elasticsearch 设置 CircleCI 我想已经配置了镜像 但是如何在 CI 中连接到它 到目前为止我已经尝试过 https github com elastic elasticsear
  • 回滚后是否应该删除迁移

    我对 ruby 和 Rails 相当陌生 刚刚开始了解迁移 我的问题是回滚后删除迁移的最佳实践或正确时间是什么 到目前为止 我读到的内容是回滚后是否删除迁移的观点问题 但是在团队中工作时删除迁移是否有任何重大影响 以及保留迁移文件相对于删除
  • Rails 从 OrdersController 更新用户模型的属性

    这是我的代码 订单控制器类 def create order Order new params order if order purchase work GATEWAY store credit card options result wo
  • 使用 CreateProcessAsUser 和 CreateEnvironmentBlock 创建进程后未设置 Clientname

    我编写了一个在本地系统帐户下运行的 C 服务 当用户登录终端服务器时 我用它来生成一个进程 该服务实现了OnSessionChange方法并接收SessionChangeDescription具有相应SessionID的消息 我使用此 Se
  • Rails 4 和 Turbolinks - 元标签未更改

    我有一个启用了 Turbo Links 的 Rails 4 应用程序 但在更改页面时无法刷新元标记 不是完全刷新 我读到元标记需要包含在加载涡轮链接的 JavaScript 之前 但它没有效果 完全刷新可以完成这项工作 但不幸的是这不是我所
  • 使用redirect_to :create 动作

    我正在尝试重定向到另一个控制器的创建方法 但是 我找不到将方法设置为 POST 的方法 这将导致调用索引方法 使用 method gt post只是创建一个新参数 但不会更改 http 方法 有什么想法如何重定向到创建方法吗 您无法在重定向
  • 我必须使用什么加密程序来通过 HTTP 协议发送加密的“电子邮件”和“密码”值?

    我正在使用 Ruby on Rails 3 我想通过 HTTP 协议发送 电子邮件 和 密码 值 我知道 我不应该 但我需要 我需要从发送用户凭据我的客户申请到一个我的服务应用 我可以使用公共和私人RSA密钥来实现这一点 但如果是这样 我不
  • Rails - 用于集合集的单选按钮

    我有以下输出选择框 br 替代输出单选按钮的 Rails 方法是什么 对于单选按钮 您必须自行迭代并输出每个单选按钮及其标签 事实上这真的很容易
  • 在rails生成脚手架中跳过JSON格式

    当您使用类似命令生成 Rails 脚手架时rails g scaffold Thing有什么办法可以避免变得烦人吗 respond to do format format html index html erb format json re

随机推荐

  • Intellij:如何为 javax.annotation.PostConstruct 添加 java.annotation 模块

    我将项目使用的SDK升级到Java 10 以下导入语句导致错误 导入 javax annotation PostConstruct 包 javax annotation 在模块 java xml ws annotation 中声明 但模块
  • Mac 上的临时端口范围是多少?

    我正在尝试对 Web 框架进行基准测试 并发现没有足够的免费临时端口可能会伪造结果 不幸的是 我还没有找到我的 Mac 上的临时端口范围 或者如何显示它 基准测试者 请注意临时端口限制 https web archive org web 2
  • Maven Eclipse 多模块阴影依赖

    在多模块 Maven 项目中 其中一个模块是阴影模块 例如 没有源 但生成一个jar during package阶段 其他模块将此模块作为依赖项引用 全部位于同一父模块下 有没有办法让 Eclipse 将着色模块识别为依赖项 Eclips
  • java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法dispatchCancelPendingInputEvents

    遇到一个问题 我的 Android 应用程序在尝试启动活动时不断崩溃 我无法重现该问题 这只是从发生此问题的多个设备的日志中获取的 堆栈跟踪 2020 03 08 14 58 28 717 5449 5449 I MonoDroid End
  • Android 使用 openssl 构建 PJSIP

    我正在尝试在 Android 上构建具有 SSL TLS 支持的 PJSIP 我成功构建了 OpenSSL 以下这个答案 https stackoverflow com a 11170629 1274789 没有 fips 作为共享 so
  • 在 Pandas 中结合 FacetGrid 和双 Y 轴

    我试图绘制两个不同的变量 通过因果关系链接 delai jour and date sondage在单个 FacetGrid 上 我可以用这段代码做到这一点 g sns FacetGrid df verif sum col prefectu
  • 多行 python 正则表达式

    我有一个结构如下的文件 A some text B more text even more text on several lines A and we start again B more text more multiline text
  • 解析文本最快的方法是什么?

    假设我想提取在某个文本文件中找到的给定字符串后面的第一个单词 或浮点数 请参阅如何提取字符串后面的第一个单词 https stackoverflow com questions 3549877 how to extract the firs
  • 线程同步 - 同步三个线程打印 012012012012..... 不起作用

    我正在尝试同步三个线程来打印 012012012012 但它无法正常工作 每个线程都分配有一个数字 当它收到来自主线程的信号时 它将打印该数字 以下程序有问题 我无法发现 public class Application public st
  • 多平台C++交叉编译器

    如何为 C 库构建交叉编译器以在单个构建服务器上针对多个平台 交叉编译器应该能够为 至少 Windows 7 Mac OS X Ubuntu 11 04 32 位 64 位 调试 发布 构建库 我不在乎从头开始的整个构建是否需要永远 或者是
  • -framework Accelerate,其中包含

    我正在尝试编译别人的代码 但没有简单的头文件 我需要链接 osx 上的默认 lapack 和 blas 库 经过一番搜索后我发现它们位于 Accelerate 框架中 在我的 make inc 中我使用了类似的东西 LAPACK LIBS
  • Handlebars-template 中元素的 Onclick 功能

    我正在使用 Handlebars js 和一些 jQuery 构建一个简单的 Web 应用程序 现在我有一个数据列表 并通过 Handlebars 模板呈现它们 然后我想要一些与这些相关的操作 例如更新一个元素 或者删除一个元素 我有与这些
  • Android - 完全从 xml 创建列表视图

    我想在我的申请中提出一些选择 现在我正在用一个一个的按钮来做这件事 我真正想做的是将它们呈现为一个列表 就像 设置 应用程序中一样 这归结为创建一个包含预定义值 选择的列表 我的问题是我不知道如何使用 xml 来做到这一点 我可以像这样将
  • ReactJS:如何将一个组件覆盖在另一个组件的元素之上?

    我才刚刚开始反应 我有一个带有输入字段和按钮的组件 还有另一个组件返回 JSX 一个闪烁的点 我正在主组件中导入闪烁点组件 并希望在输入字段为空时将闪烁点覆盖在输入字段的顶部 我怎样才能实现这个目标 请帮助我 其代码可以在以下位置找到 ht
  • For 循环总是至少执行一次吗?

    据我的老师说 即使不满足条件 for 循环也总是至少执行一次 示例 就像我从 C 中知道的那样 for int i 6 i lt 5 i irrelevant for this question 据她说 这个循环至少会执行一次 但它没有执行
  • Android 仅当 RecycleView/List 大于屏幕时才 setStackFromEnd

    我有一个 RecyclerView 我想开始显示底部项目 所以我使用 myLayoutManager setStackFromEnd true 当有足够的项目填满屏幕时 它的工作方式正如我想要的那样 但是如果 RecyclerView 中只
  • Guid 作为 RavenDB 中的 Id

    The RavenDb 文档 http ravendb net docs client api basic operations saving new document状态 支持数字或 Guid Id 属性 并且可以无缝工作 在这种情况下
  • 将我的图像置于 ul li div 中心

    我在页脚中放置了一张图像 我希望它居中 但我不会工作 我希望我的图像居中 所以我希望有人可以帮助我看看我的代码 HTML div class center ul li a href target blank class centering
  • VS2019 Xamarin Forms 远程 IOS 模拟器黑屏 - 如何修复?

    Xamarin 表单项目微软 Visual Studio 2019 版本 16 9 Mac 上的 Xcode 版本 12 4 使用运行14 4的iPad Pro 11英寸作为模拟设备和IOS版本 我尝试过其他模拟器 如果我在 Mac 上构建
  • 为什么我的 Rails 初始化程序在控制台中缓存 ENV 变量(Foreman、Dev env)

    起初的小烦恼现在变成了令人头痛的事情 我正在构建一个 Rails 4 应用程序 并使用 Foreman 进行开发设置 并使用 Procfile 和 env 文件进行配置 当我在 env 文件中设置 ENV 变量时 我的应用程序会正确拾取它