使用 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 及其相关文档,了解如何轻松使用数据库。这是一种更具可扩展性的方法,并且会在您增加代码时为您省去很多麻烦。
好的,所以我有一个 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 及其相关文档,了解如何轻松使用数据库。这是一种更具可扩展性的方法,并且会在您增加代码时为您省去很多麻烦。