2009-11-06 4 views
0

Я пишу «действие» для CloudCrowd, которому нужен доступ к среде Rails (для некоторых материалов ActiveRecord), но стандартные средства загрузки среды приводят к появлению рыхлых ошибок.Как вы можете загрузить среду Rails из действий CloudCrowd?

Я попробовал каждый из следующих в верхней части моего действия .rb файла:

require(File.join(File.dirname(__FILE__), '../..', 'boot')) 

и

require File.expand_path(File.dirname(__FILE__) + "/../../environment") 

Когда я пытаюсь запустить узел, я получаю эту ошибку:

»crowd node 
Starting CloudCrowd Node on port 9063... 
Missing the Rails 2.3.2 gem. Please `gem install -v=2.3.2 rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed. 

И у меня, конечно же, установлен жемчуг:

»gem list | grep -i rails 
rails (2.3.4, 2.3.2, 2.2.2, 1.2.6) 

ответ

0

Кто-то из @documentcloud видел мою просьбу и помогал мне в этом. Пришлось префикс сценария действия с this:

RAILS_GEM_VERSION = nil 
RAILS_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '../../..')) 
RAILS_ENV = ENV['RAILS_ENV'] || 'development' 

if CloudCrowd.node? 
    require 'rubygems' 
    require 'activerecord' 
    ActiveRecord::Base.logger = Logger.new(STDOUT) 
    require File.expand_path(File.join(File.dirname(__FILE__), '../..', 'environment')) 
end 
1

Nice! У меня на самом деле были проблемы с вашим каналом RAILS_ROOT и заменил «../../ ..» на «../ ..». Кроме того, поскольку вы уже объявили константу RAILS_ROOT, вы можете отбросить несколько вещей в требованиях среды. Вот моя версия:

RAILS_GEM_VERSION = nil 
RAILS_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '../..')) 
RAILS_ENV = ENV['RAILS_ENV'] = ENV['RACK_ENV'] 

if CloudCrowd.node? 
    require 'rubygems' 
    require 'activerecord' 
    ActiveRecord::Base.logger = Logger.new(STDOUT) 
    require "#{RAILS_ROOT}/config/environment" 
    # and if you need to import 
    # anything from lib just go ahead and 
    require 'my_custom_lib/name_of_file' 
end