如何在Windows上更改Ruby-on-Rails虚拟机的“堆栈大小”?

费利克斯

我遇到了使用Nokogiri's gem和解析复杂页面(SystemStackError: stack level too deep耗尽堆栈内存的问题

我在这里发现了几个线程,这些线程说我需要更改Rubys VM的堆栈大小,但是由于我使用的是Windows 10笔记本电脑,所以似乎无法正常使用它。

当我打开ruby控制台并请求变量值时,我得到:

irb> ENV['RUBY_THREAD_VM_STACK_SIZE'] 
=> nil

键入此内容时,我确实得到了堆栈大小的值(名称略有不同)

irb> RubyVM::DEFAULT_PARAMS
=> {:thread_vm_stack_size=>1048576, :thread_machine_stack_size=>1048576, :fiber_vm_stack_size=>131072, :fiber_machine_stack_size=>524288}    

我尝试安装dotenv gem并在.env文件中设置变量

RUBY_THREAD_VM_STACK_SIZE = 50000000
THREAD_VM_STACK_SIZE = 50000000

现在,我可以将它们irb>作为ENV变量看到,但是RubyVM::DEFAULT_PARAMS并没有改变。

有什么想法可以更改应用程序的VM堆栈大小吗?非常感谢!!

卡斯珀

您不能使用dotenvgem的原因是,这些变量必须在VM初始化时由Ruby读取。设置它们dotenv对于VM初始化来说为时已晚。

因此,您必须正确设置变量,以便在启动Ruby可执行文件之前可以使用它们。

在Windows上,环境变量存储在注册表中。您可以从控制面板或命令行中更改它们,如下所示:

# Set temporary variable for this command prompt
set RUBY_THREAD_VM_STACK_SIZE=1234567

# Set permanent user-level variable in the registry
setx RUBY_THREAD_VM_STACK_SIZE 1234567

万一您使用过setx,则必须在使用后打开一个新的命令提示符,现在您应该让Ruby选择新的设置。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章