在Windows 7上的Ruby中,如何从命令行打开程序的源文件?
示例:
def dev_mode
if ARGV[0] == '--dev-mode'
system('open test.rb')
end
end是否可以使用用户计算机的默认编辑器打开程序?例如在记事本中打开它(如果用户没有编辑器),或者用户使用的编辑器作为源文件?
发布于 2016-05-10 18:21:24
使用相关程序打开文件的规范方法因操作系统(或shell)而异。下面是在指定的OSes上工作的4个示例:
打开文件
视窗
使用标准命令shell start,从Windows 95开始:
system %{cmd /c "start #{file_to_open}"}Mac OS X
使用标准的open命令:
system %{open "#{file_to_open}"}Linux/Unix Gnome
使用Gnome实用程序gnome-open
system %{gnome-open "#{file_to_open}"}Linux/Unix
使用xdg-open实用程序:
system %{xdg-open "#{file_to_open}"}相关程序
在任何一个系统上,检测文件类型的关联程序都是一个相当高的要求。例如,对于Windows,您必须检查注册表,而在Mac中,您必须读取正确的plist值;Linux完全是另一个世界。
你最好简单地要求用户有一个程序来使事情变得容易开始。一旦在应用程序中使用了其他逻辑,就可以在没有现有文件关联的情况下向默认应用程序添加一些有趣的特性,比如回退。
发布于 2016-05-10 17:37:05
在Mac上,您已经到了一半;open在默认应用程序中打开一个文件。默认情况下,它为文本文件打开一个合理的编辑器,为Ruby打开一个XCode;我不会在XCode中编辑Ruby,但如果需要,我可以更改关联。
启动Ruby程序的文件名在$PROGRAM_NAME中,所以您可以这样做
def dev_mode
if ARGV[0] == '--dev-mode'
system("open #{$PROGRAM_NAME}")
end
end在类似Unix的系统上,包括OS,如果设置了ENV['EDITOR'] ( EDITOR环境变量),您可能需要使用它的值。这是许多程序使用的惯例。
我会让其他人给出其他操作系统的答案。
https://stackoverflow.com/questions/37145228
复制相似问题