gpt4 book ai didi

无需 Rails 即可自动重新加载 Ruby 代码

转载 作者:太空宇宙 更新时间:2023-11-03 16:00:53 27 4
gpt4 key购买 nike

使用 Rails、Sinatra、Padrino...我习惯了在我修改代码时自动重新加载我的代码。

在处理不是基于 Rack 的 Web 框架的普通 Ruby gem 项目时,如何获得相同的行为。

我只想启动一个pry 控制台,然后立即能够测试我的源代码的最新修改。

最佳答案

你只需要在某处定义一个方法来清除内存中的旧内容,然后重新加载构成你的 gem 的所有文件:

def reload!
Object.send(:remove_const, :ProjectNamespace)
path = File.expand_path("../", __FILE__)
Dir.glob("#{path}/**/*.rb") { |f| load f }
end

由于您使用的是 Pry,因此您可以在项目的 .pryrc 中定义它如果您想将其排除在代码库之外。

您甚至可以在模块内部定义重新加载逻辑,只要它包含在您要重新加载的文件中,一切都会很好:

module ProjectNamespace
module_function
def reload!
# Reload code
end
end

ProjectNamespace.reload!

如果您需要更易于管理的解决方案(例如定时重新加载),您应该查看类似 Rubyworks' autoreload 的库.

关于无需 Rails 即可自动重新加载 Ruby 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25630528/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com