我试图找出是否有可能我遇到的错误可能与我使用rbenv
但我的团队的其余成员使用RVM
这一事实有关。如果明确指定了项目的Ruby版本,是否可以从RVM更改为rbenv会引入错误?
我一直在想的是,对于特定的Ruby,由rbenv
/RVM
创建的可执行文件是否相同。如果分别在.ruby_version
和Gemfile
中分别明确指定了Ruby版本和gem版本,那么rbenv
和RVM
是否有可能会对代码进行不同解释或者我希望得到相同的结果?
UPDATE。我所遇到的实际错误的描述被要求,所以在这里。
本质上,该项目使用dotenv
gem(和dotenv-rails
)读取根目录中的.env
文件。其中两个值(salt和IV)是包含换行符的Base64编码字符串。在解码过程中的某个点,每个换行符前面都会加上一个额外的反斜杠,导致解密失败。问题是,dotenv
gem似乎正在正确地读取文件(即在Rails控制台中运行Dotenv.load
显示正确解析字符串),所以它是堆栈中更深的一些其他gem或扩展引起的问题。我们还没有确定它。
我们速战速决是gsub
的双重逃脱换行符(类似于this foreman
bug fix,但球队的一些成员不希望因为他们相信这是造成rbenv
的环境问题进行合并。我不认为这样的话,但我想知道如果这是一个可能性之前,我尝试卸载rbenv
并切换到RVM
,我真的不想做的事。
更新#2。问题解决了!
我没有结束切换到RVM
,但无济于事。但最终确实成为一个环境问题。
这是因为我的默认外壳是zsh
,但我的团队大部分使用bash
,我们使用heroku local:run
来启动本地开发环境。事实证明,它使用你的默认shell环境。即使您使用不同的外壳进行呼叫(例如bash
)。然而,rails console
和heroku local:run rails console
默认使用sh
。 zsh
正在处理的env变量的输入与bash
和sh
不同。
可能是一样的......你为什么不说出你得到的错误是什么? –
这有点复杂,我真正想要的是有人深入解释,如果RVM和rbenv具有不同的生成过程导致不同的可执行文件,或者在建立Ruby可执行文件时他们实际上做了同样的事情。但我给这个朋友发了一封电子邮件,他也想知道这个错误是什么,所以一旦我把它输入,我会更新我的问题。 –