| 2008-08-17 13:37:02 | Ответить |
|---|---|
|
Константин Адрес: Сообщений: 41 Регистр: 2008-08-17 его блог 0 сообщ. |
Ruby без Rails |
|
День добрый!
Сделал приложение на Rails, и теперь понадобился cgi скрипт, который работает отдельно, но использует те же модели. Как его по уму сделать - этот скрипт? Сказали смотреть в сторону Phusion & Rack, но с Rack я вообще не разобрался, как cgi с его помощью делать. И такая проблема: Сейчас использую Apache2 + mod_ruby мне сказали, что mod_ruby устарел, поэтому поставил еще Phusion Passenger. В итоге имею 2 параллельно работающих способа. Все Rails приложения переключились на Passenger нормально, а вот cgi скрипт все никак. Более того, джемы работают только в Phusion :( Немного путано, сорри, если нужны какие детали - все распишу. |
|
| 2008-08-17 16:04:07 | Ответить |
|---|---|
|
Ruslan Voloshin Адрес: odessa Сообщений: 1293 Регистр: 2007-03-13 его блог 40 сообщ. |
RE: Ruby без Rails 3.0 из 2 гол. |
|
так мод райлс и сделан что бы подгружать рельсы хотя там есть варианты для cgi рекомендую внимательно посмотреть на сайте пасенжера примеры. А для CGI тебе наверное прийдется использовать или mod_ruby или внимательно вычитать что говорят о пассенжере у меня не было опыта по запуске на пасенжере cgi скриптов
------------
Занимаюсь вебом и продвижением сайтов.
|
|
| 2008-08-27 07:42:09 | Ответить |
|---|---|
|
Константин Адрес: Сообщений: 41 Регистр: 2008-08-17 его блог 0 сообщ. |
RE: Ruby без Rails |
|
Да, так и пришлось сочетать - mod_ruby для CGI, и mod_rails для RoR приложения.
Никто не пользовал Rack? Что за зверь, с чем его едят, может через него можно как-то CGI запускать? Насчет использования в Passenger + Ruby Enterprise установленных обычным способом джемов - нужно прописать в настройках Апача: RailsSpawnMethod conservative Говорят, что работает медленнее, пока разницы не ощутил. Если скорость критична, тогда ставим джемы заново для нового руби, у меня это так: /opt/ruby-enterprise-1.8.6-20080810/bin/gem install json Еще возникла проблема, замучился уже. Скрипт такой: require 'cgi' require '../config/environment' params = CGI::parse( ENV['QUERY_STRING'] ).each{ |key, el| {key => el.first} } #I don't know how to get GET vars in another way seller = ContrSeller.find( :first, :conditions => { :id => params['seller_id'], :password => params['pass'] } ) #ContrSeller - is an existing model При выполнении получаю ошибку: mod_ruby: error in ruby mod_ruby: /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.1.0/lib/active_support/dependencies.rb:169:in `file?': Insecure operation - file? (SecurityError) mod_ruby: from /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.1.0/lib/active_support/dependencies.rb:169:in `search_for_file' mod_ruby: from /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.1.0/lib/active_support/dependencies.rb:167:in `each' mod_ruby: from /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.1.0/lib/active_support/dependencies.rb:167:in `search_for_file' mod_ruby: from /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.1.0/lib/active_support/dependencies.rb:258:in `load_missing_constant' mod_ruby: from /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.1.0/lib/active_support/dependencies.rb:483:in `const_missing' mod_ruby: from ./api.rb:6:in `new_session' Уже все прошерстил про $SAFE & taint/untaint, пробовал и $SAFE = 0 - ругается, и params.untaint - никакого эффекта. Насколько я вижу, руби ругается именно на создание нового объекта = ContrSeller. Но это же не taint строка, почему же возникает Insecure operation при поиске соответствующего модуля? |
|
| 2008-08-27 11:03:15 | Ответить |
|---|---|
|
Ruslan Voloshin Адрес: odessa Сообщений: 1293 Регистр: 2007-03-13 его блог 40 сообщ. |
RE: RE: Ruby без Rails |
|
Тут у нас на рабоет тоже пытались запустить мож райл под руби ентерпрайс и тоже что то не работает он корректно.
------------
Занимаюсь вебом и продвижением сайтов.
|
|
| 2008-08-27 14:23:59 | Ответить |
|---|---|
|
Константин Адрес: Сообщений: 41 Регистр: 2008-08-17 его блог 0 сообщ. |
RE: Ruby без Rails |
|
Насколько я понимаю, Ruby Enterprise и mod_ruby вообще не пересекаются, т.е. одно другому не мешает.
Проблема возникает в следующей функции из файла activesupport-2.1.0/lib/active_support/dependencies.rb Тут видно, что имя файла формируется из кусков, но почему вдруг это становиться tainted - я понять не могу, вроде нигде не используются переменные из POST/GET К слову, тот же самый код у меня на домашнем компе работает замечательно. Может дело в правах на файлы/папки? |
|
| 2008-08-27 16:51:15 | Ответить |
|---|---|
|
Ruslan Voloshin Адрес: odessa Сообщений: 1293 Регистр: 2007-03-13 его блог 40 сообщ. |
RE: RE: Ruby без Rails |
|
попробй дать на весь проект
------------
chmod -R +755 ./app и попробуй установить в рельсовом приложении в environment.rb Занимаюсь вебом и продвижением сайтов.
|
|