我是这个网站的新手,也是编程方面的新手。其实我正在学习Ruby。 在我的第一个实验中,我想从Youtube下载一个文件。我决定使用ruby-youtube-dl。 我将ARGV0解析为$ url。 然后我使用:
FileUtils.cd("#{$musicdir}/#{$folder}") do
YoutubeDL::Downloader.download_audio("#{$url}")
end
但那个产生了那个输出:
sh: -c: Zeile 0: Syntaxfehler beim unerwarteten Wort `('
sh: -c: Zeile 0: `/home/sascha/.rvm/gems/ruby-2.0.0-p353/gems/ruby-youtube-dl-0.0.5/bin/youtube-dl.py --no-progress --extract-audio --audio-format=mp3 --output=/tmp/%(stitle)s-%(uploader)s-%(autonumber)s.mp3'
/home/sascha/.rvm/gems/ruby-2.0.0-p353/gems/ruby-youtube-dl-0.0.5/lib/ruby-youtube-dl/downloader.rb:9:in `download_audio': undefined method `[]' for nil:NilClass (NoMethodError)
from /home/sascha/RubymineProjects/ruby_script_collection/youtube_dlhelper/lib/youtube_dlhelper.rb:86:in `block in <top (required)>'
from /home/sascha/.rvm/rubies/ruby-2.0.0-p353/lib64/ruby/2.0.0/fileutils.rb:125:in `chdir'
from /home/sascha/.rvm/rubies/ruby-2.0.0-p353/lib64/ruby/2.0.0/fileutils.rb:125:in `cd'
from /home/sascha/RubymineProjects/ruby_script_collection/youtube_dlhelper/lib/youtube_dlhelper.rb:84:in `<top (required)>'
from -e:1:in `load'
from -e:1:in `<main>'
完整的源文件放在那里:http://pastebin.com/jAwjHanw
也许有人可以帮忙吗?
答案 0 :(得分:1)
我查看了日志,这似乎是一个错误。您可以执行以下步骤来解决或部分解决问题:
查看gem:
$ cd ~/git
$ git clone https://github.com/bnmrrs/ruby-youtube-dl.git
在项目的 Gemfile 中指定路径文件夹,该文件夹将指向新签出的gem:
gem 'ruby-youtube-dl', :path => '~/git/ruby-youtube-dl'
尝试在本地修复gem,例如删除括号和#chars,并用常量替换它们。当然这将是一种解决方法。
如果你正在开发一个gem或rails应用程序,你可以shell发布你对web的更改,你可以通过在 github上分支 gem 来做到这一点,推动你改成你的版本分支:
$ git clone git://github.com/yourname/ruby-youtube-dl.git
$ cd ruby-youtube-dl
$ git branch fixbranch
$ git checkout fixbranch
# do your changes...
$ git push origin fixbranch
将您的更改用作主要版。在这种情况下,您需要更改Gemfile
,例如如下:
gem 'ruby-youtube-dl', :git => 'git://github.com/yourname/ruby-youtube-dl.git', :branch => 'fixbranch'
如果您的更改没有解决方法,您可以在 github 上打开一个拉取请求,将您的更改提交到主流。
如果即使使用解决方法也无法解决问题,那么将问题报告给gem开发人员here并将错误日志提供给他们将是野兽。