我是执行对称加密的ruby gem sym
的作者。
作为命令行界面的一部分,我非常希望能够将数据用于[de]加密,并通过可插入的URI集将结果写出来。在我看来,我们已经以这种方式使用URI,例如file://
存在并且OpenURI
模块支持。
但是,我想要的是一个gem,它不仅可以理解更广泛的URI集,还可以读/写并可能删除通过URI定义的资源。
此功能可能非常有用,因为任何读取和写入数据的ruby程序都可以突然替换File.read
,完全是通用的:
var_value = SuperURI.parse('env://BASH_VARIABLE_NAME')`.read
或
redis_op = SuperURI.write('redis://localhost:6379/1/OP,Arg1,Arg2')
或
contents = SuperURI.parse('scp://user@host/path/file').read
当我继续这条道路时,我想到了以下候选URI。 并非所有人都支持写入或删除资源,但所有这些都可以读取数据。
OpenURI支持的现有URI:
http[s]://user@host/path/file
file://filename
ftp[s]://user@host/path/file
ldap://ldap.example.com/dc=example?
建议访问本地和远程数据的可能方法:
string://value
env://variable
std[in|out]://
shell://command
keychain://item_name
redis://127.0.0.1:6397/1/OP,arg1,arg2,...
memcached://127.0.0.1:11211/OP,arg1,arg2
scp://user@host/path/file
postgresql://user@host/db/?sql=select%20now
等等。
人们对这个gem的有用性的看法是什么(我们现在只称它为SuperURI
),这将提供非传统URI协议的实现?
有用吗?这是一个可怕的想法吗?这本身就不安全吗?
非常感谢来自Ruby社区的深思熟虑的意见。
谢谢!
答案 0 :(得分:1)
简单的答案是否定的,所以开始写作。
您似乎很清楚宝石应该做什么以及它应该如何表现。由于您已经创建了一个gem,我认为您拥有创建另一个所需的必要技能。
我建议已经有gems(和标准库)处理特定的操作(例如File
用于文件处理)。所以新的gem应该只解析输入字符串并将结果传递给相关的现有库/ gem。
我还建议您使用parse('string').read
而不是read('string')
。尝试支持CRUD操作可能会很好;这样:
SuperURI.create('file://filename', data)
SuperURI.read('file://filename')
SuperURI.update('file://filename', data)
SuperURI.delete('file://filename')
我刚刚把some code放在一起,展示了我是怎么做到的。随意滥用它。