使用 ruby 写入 ruby 文件

Write to a ruby file using ruby

好的,所以我有一个 ruby 文件,它接受输入并将其写入另一个 ruby 文件。我不想把它写成一个文本文件,因为我试图将这个项目插入到一个哈希中,该哈希稍后可以在程序的另一个 运行 中访问,这只能通过将信息写入一个来实现文本文件或另一个 ruby 文件。在这种情况下,我想将其写入另一个 ruby file.Here 的第一个文件:

test_text=gets.chomp
to_write_to=File.open("rubylib.rb", "a")
test_text="hobby => #{test_test},"
to_write_to.puts test_text

这会在页面的底部插入给定的信息。另一个文件是这样的:(rubylib.rb)

user_info={
  "name" => "bob",,
  "favorite_color" => "red"

}

我有三个问题:

1) 是否可以将 test_text 添加到右括号之前的散列中?

2) 使用此方法,rubylib.rb 文件会在 运行 时将添加的文本解析为代码,还是其他内容?

3)有更好的方法吗?

我想做的实际上是将新数据物理写入哈希,以便下次文件 运行 时它仍然存在,以存储有关用户的数据。因为如果我按正常方式添加它,下次文件 运行 时它就会丢失。有没有一种方法可以在 ruby 文件的 运行 之间存储数据而不写入文本文件?

我已尽我所能为您提供所需的信息,并尽我所能解释情况。如果您需要澄清或更多信息,请发表评论,我会尝试通过评论回复您。

感谢帮助

您应该为此使用 YAML

以下是使用示例中使用的数据创建 .yml 文件的方法:

require "yaml"
user_info = { "name" => "bob", "favorite_color" => "red" }
File.write("user_info.yml", user_info.to_yaml)

这将创建一个如下所示的文件:

---
name: bob
favorite_color: red

在您的程序的后续执行中,您可以加载 .yml 文件,您将得到与开始时相同的哈希值:

user_info = YAML.load_file("user_info.yml")
# => { "name" => "bob", "favorite_color" => "red" }

并且您可以将新项目添加到哈希并再次保存:

user_info["hobby"] = "fishing"
File.write("user_info.yml", user_info.to_yaml)

现在文件有这些内容:

---
name: bob
favorite_color: red
hobby: fishing

使用数据库,甚至是 SQLite,它可以让您在不进行任何编码的情况下为多个会话存储数据。按原样写入文件确实不可扩展或不实用。你会很快遇到一些真正的问题。

我建议查看 Sequel 及其相关文档,了解如何轻松使用数据库。这是一种更具可扩展性的方法,并且会在您增加代码时为您省去很多麻烦。