Für das Deployment einer Rails-Anwendung ist es eine gute Sache, die für die Anwendung benötigten Gems in das Verzeichnis /vendor/gems
zu kopieren. Der Hintergrund ist einfach - so wird sichergestellt, dass der Server dieselbe Version des Gems referenziert wie vom Entwickler vorgesehen.
Damit Rails diese zur Laufzeit findet wird in der environment.rb
folgender Code eingefügt:
config.load_paths += Dir["#{RAILS_ROOT}/vendor/gems/**"].map do |dir|
File.directory?(lib = "#{dir}/lib") ? lib : dir
end
Das Problem dabei ist nun, dass die Vendor-Gems nicht von den Rake-Tasks gefunden werden. Dies liegt daran, dass die environment.rb
nicht im Rakefile eingebunden ist. Um dies zu ändern, muss einfach folgende Zeile in das Rakefile
eingefügt werden:
# we need this to require the vendor/gems
require(File.join(File.dirname(__FILE__), 'config', 'environment'))
Danach kann man Vendor-Gems auch in Rake-Tasks verwenden.