我需要从ruby运行以下代码:
system "wget http://example.org/some/large/archive.zip"
当我运行此命令时,我看到
将输出重定向到'wget-log'。
我需要tail -f wget-log
来查看进度
如何在运行ruby进程的终端中看到wget输出?
我试过
system "wget -O - http://example.org/some/large/archive.zip > dev/null"
但它没有帮助
也许还有其他选项可以使用ruby下载大型档案并查看进度吗?
答案 0 :(得分:1)
您可以使用Ruby标准库中的Open3模块。
此授予您访问stdout,stderr,退出代码以及在运行其他程序时等待子进程的线程。
因此,使用GoogleMaps Gmap;
GMap.MarkerClick += GMap_MarkerClick;
GMap.InfoWindowClick += GMap_InfoWindowClick;
private void GMap_MarkerClick(object sender, GoogleMap.MarkerClickEventArgs e)
{
Marker marker = e.Marker;
marker.ShowInfoWindow();
}
private void GMap_InfoWindowClick(object sender, GoogleMap.InfoWindowClickEventArgs e)
{
}
命令可以执行以下操作:
pwd
答案 1 :(得分:0)
ruby提供了一个很好的内置库来制作任何类型的http内容,例如下载文件你可以使用require 'net/http'
require 'uri'
uri = URI(URI.encode("http://example.org/some/large/archive.zip"))
Net::HTTP.start(uri.host,uri.port) do |http|
request = Net::HTTP::Get.new uri.path
http.request request do |response|
open "/tmp/my_large_file.zip", 'w' do |io|
response.read_body do |chunk|
puts "Writing #{chunk.length} bits ..." # see progress
io.write chunk
end
end
end
end
:
wget
使用wget
,您无法在红宝石代码中捕获任何类型的http错误。*
使用CommandInvokationFailure: Failed to build apk.
/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/bin/java -Xmx2048M -Dcom.android.sdkmanager.toolsdir="/Users/kevingriffiths/Android/sdk/tools" -Dfile.encoding=UTF8 -jar "/Applications/Unity/PlaybackEngines/AndroidPlayer/Tools/sdktools.jar" -
stderr[
Exception in thread "main" java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at SDKMain.main(SDKMain.java:130)
Caused by: java.lang.NoClassDefFoundError: sun/misc/BASE64Encoder
at com.android.sdklib.internal.build.SignedJarBuilder.<init>(SignedJarBuilder.java:177)
at com.android.sdklib.build.ApkBuilder.init(ApkBuilder.java:446)
at com.android.sdklib.build.ApkBuilder.<init>(ApkBuilder.java:422)
at com.android.sdklib.build.ApkBuilder.<init>(ApkBuilder.java:362)
at UnityApkBuilder.<init>(UnityApkBuilder.java:214)
at UnityApkBuilder.main(UnityApkBuilder.java:34)
... 5 more
Caused by: java.lang.ClassNotFoundException: sun.misc.BASE64Encoder
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:466)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:563)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
... 11 more
]
stdout[
]
exit code: 1
UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.AndroidSDKTools.RunCommandInternal (System.String javaExe, System.String sdkToolsDir, System.String[] sdkToolCommand, Int32 memoryMB, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.AndroidSDKTools.RunCommandSafe (System.String javaExe, System.String sdkToolsDir, System.String[] sdkToolCommand, Int32 memoryMB, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.BuildPlayerWindow:BuildPlayerAndRun()
,您无法进行身份验证,例如在您的ruby代码中。*
使用Ruby内置库,它非常强大。
您可以使用一些错误的代码