Fedora 27: Setup stackskills-dl
A couple of days ago we were asked to setup stackskills-dl
on a Fedora 27 (x64)
.
Apparently stackskills-dl
is a Ruby script that allows a registered user to download the StackSkills
tutorials for which the user has access to.
Following the instructions at https://github.com/yoonwaiyan/stackskills-dl are not enough to get the application running as the json gem
and the Ruby development
files appear to be missing from the filesystem.
Solution: Below are the steps we followed to setup stackskills-dl
and make it operational:
sudo dnf install gem ruby-devel youtube-dl wget; gem install json; gem install bundler; git clone https://github.com/yoonwaiyan/stackskills-dl.git; cd stackskills-dl/; bundle install;
After the above steps were completed, we were able to use stackskills-dl
from the clone/installation folder normally:
[george@banana stackskills-dl]$ ruby stackskills_dl.rb -u "[email protected]" -p "e#rf54HTw3se!fe678f." -s https://stackskills.com/courses/enrolled/007; Loaded login credentials from environment variables. Login Successfully. Finding https://stackskills.com/courses/enrolled/007 from your list of courses Number of courses found: 1 ... [george@banana stackskills-dl]$ ruby stackskills_dl.rb --help Usage: ruby stackskills_dl.rb [options] -u, --email NAME Email -p, --password PASSWORD Password -c, --course COURSE_URL Course URL in ID. -s, --course-slug COURSE_SLUG Course URL in slug.
With out the Ruby json gem
you would get the following error:
[george@banana stackskills-dl]$ ruby stackskills_dl.rb --help; /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- json (LoadError) from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require' from /home/george/.gem/ruby/2.4.0/gems/mime-types-2.99.1/lib/mime/types/loader.rb:226:in `load_from_json' from /home/george/.gem/ruby/2.4.0/gems/mime-types-2.99.1/lib/mime/types/loader.rb:63:in `block in load_json' from /home/george/.gem/ruby/2.4.0/gems/mime-types-2.99.1/lib/mime/types/loader.rb:62:in `each' from /home/george/.gem/ruby/2.4.0/gems/mime-types-2.99.1/lib/mime/types/loader.rb:62:in `load_json' from /home/george/.gem/ruby/2.4.0/gems/mime-types-2.99.1/lib/mime/types/loader.rb:88:in `load' from /home/george/.gem/ruby/2.4.0/gems/mime-types-2.99.1/lib/mime/types/loader.rb:113:in `load' from /home/george/.gem/ruby/2.4.0/gems/mime-types-2.99.1/lib/mime/types.rb:296:in `load_default_mime_types' from /home/george/.gem/ruby/2.4.0/gems/mime-types-2.99.1/lib/mime/types.rb:323:in `<class:Types>' from /home/george/.gem/ruby/2.4.0/gems/mime-types-2.99.1/lib/mime/types.rb:63:in `<top (required)>' from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require' from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require' from /home/george/.gem/ruby/2.4.0/gems/mechanize-2.7.4/lib/mechanize/pluggable_parsers.rb:5:in `<top (required)>' from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require' from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require' from /home/george/.gem/ruby/2.4.0/gems/mechanize-2.7.4/lib/mechanize.rb:1361:in `<top (required)>' from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:133:in `require' from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:133:in `rescue in require' from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:40:in `require' from /home/george/Videos/stackskills-dl/lib/course_finder.rb:1:in `<top (required)>' from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require' from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require' from stackskills_dl.rb:4:in `<main>'