2016-08-23 3 views
0

Ich habe ein Ruby-Skript, das 3 Edelsteine ​​benötigt, um zu arbeiten. Mein Skript beginnt wie folgt:Erfordern Reihenfolge in einem Ruby-Skript

#!/usr/bin/env ruby 

require 'httparty' 
require 'imgkit' 
require 'twitter' 

nun interessanterweise der obige Code funktioniert, aber nur, wenn ich httparty ersten oder zweiten erfordern. Wenn ich es als dritte Abhängigkeit benötigen, erhalte ich folgendes:

'require': cannot load such file -- httparty (LoadError)

Ich würde gerne erfahren, warum dies geschieht, so kann ich besser verstehen, wie Ruby Gem Abhängigkeiten behandelt. Danke vielmals!

Edit: Ich bin Bundler. Das ist mein Gemfile:

source 'https://rubygems.org' 

ruby '2.2.2' 

gem 'wkhtmltoimage-binary' 
gem 'imgkit' 
gem 'twitter' 
gem 'rspec' 
gem 'httparty' 
+0

vielleicht hängt einer dieser anderen Edelsteine ​​von httparty ab, aber benötigt es aus irgendeinem Grund nicht? –

+1

Ich glaube nicht, dass das der Fall ist: Offensichtlich ist etwas * erforderlich *, aber es kann nicht geladen werden. Dies würde darauf hindeuten, dass entweder "twitter" mit dem Edelsteinpfad spielt oder der Edelsteinpfad relative Pfade enthält und der Twitter-Edelstein das Arbeitsverzeichnis ändert. @ JanKlimo: Könntest du versuchen, diese Möglichkeiten auszuschließen, indem du den Pfad des Gems und das Arbeitsverzeichnis überprüfst, bevor du 'httparty' benötigst? – user1934428

+4

Sie können versuchen, [Bundler] (http://bundler.io) zu verwenden und Ihre Abhängigkeiten formal in einer 'Gemfile' zu ​​deklarieren. 'require 'Bundler/setup' kann sich automatisch um viele Ladeprobleme kümmern. – tadman

Antwort

0

Tadman Rat folgend, das Hinzufügen require 'bundler/setup' das Problem gelöst. Mehr in the docs. Vielen Dank!