Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby On Rails > NameError, как фиксить


Автор: mozilla 3.4.2010, 13:50
Здравствуйте. Я новчичок на форуме. Помогите пожалуйста. В общем нужно развернуть rails-приложение под apache + fastcgi. Затратил день, вроде понял что к чему... Но опишу подробно всё. 
Хостер вручил мне логин/пасс для доступа по FTP. Вот такие там директории:
cgi-bin
conf (с конфиг-файлом httpd.conf)
html
log
var
tmp

В директории html поддиректория public. Насколько я понял из httpd.conf, вот поэтому:

ExtendedStatus On

  DocumentRoot     /usr/local/webhosting2/MYDOMAIN/html/public/
  FastCgiIpcDir /var/tmp/MYDOMAIN
  SocketPath /var/tmp/MYDOMAIN/fcgidsock

  <Directory  /usr/local/webhosting/MYDOMAIN/html/public/>

    AddHandler fcgid-script .fcgi
#    AddHandler fastcgi-script .fcgi
#    FastCgiIpcDir /var/tmp/qwerty-it.ru
    AddHandler cgi-script .cgi
    Order allow,deny
    Allow from all
    Options +Indexes +ExecCGI +FollowSymLinks
  </Directory>

что именно в директории public должен распологатсья .htacces, dispatch.fcgi.

Дальше, мой проект создавался без параметра -D, потому файлов dispatch.cgi и dispatch.fcgi не было. Я их просто вязл с другого созданного проекта. 
Создал в папке /html/public файл .htaccess. Вот  его содержимое:

AddHandler fcgid-script .fcgi
AddHandler cgi-script .cgi

Options +FollowSymLinks +ExecCGI

RewriteEngine On
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]

Сюда же закинул dispatch.fcgi. И rails-проект киинул в папку /html. В результате при запросе http://MYDOMAIN/ получаю с стандартную рельсовую welcome-страничку. Информация о версии рельсов, гемов и т.д. появляется. Т.е. подразумеваю, что я на верном пути.

Далее на сервере имеется база. С помощью phpMyAdmin я экспортирую туда все таблицы, нужные для выполнения проекта.
Правлю файл database.yml. Переименовываю файл /html/public/index.html (welcome-страничку) и добавляю root контроллер в routes.rb и по запросу 
http://MYDOMAIN/ вижу ошибку:

NameError in [ControllerName]#[ActionName]
uninitialized constant [ControllerName]

Session dump: ---
Framework Trace даёт:

/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:443:in `load_missing_constant'
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:80:in `const_missing'
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:92:in `const_missing'
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.4/lib/active_support/inflector.rb:361:in `constantize'
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.4/lib/active_support/inflector.rb:360:in `each'
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.4/lib/active_support/inflector.rb:360:in `constantize'
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.4/lib/active_support/core_ext/string/inflections.rb:162:in `constantize'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/routing/route_set.rb:443:in `recognize'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/routing/route_set.rb:436:in `call'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/dispatcher.rb:87:in `dispatch'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/dispatcher.rb:121:in `_call'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/dispatcher.rb:130
и т.д.

И так со ВСЕМИ контроллерами (запросами).  Помогите пожалуйста. Подскажите где я не прав. Ошибки в названиях/расположении представлений и т.д. не могут права на жизнь - всё тестировалось на локальной машине под webrick. 

Огромное спасибо! Если нужно - выложу любые логи, отвечу на вопросы.

Автор: source777 6.4.2010, 21:13
Так а куда ты сами исходники запихал?

P.S. Возьми нормальный хостинг с Passenger, например, http://partner.hostfabrica.ru/?id=21 или http://locum.ru/
FastCGI для RoR - шлак.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)