Ruby On Rails in UA Icon_home Главная Add to bookmarks Translate translate Profile Войти
Регистрация Форум Блоги Пользователи Список джемов Rails проекты      Поиск   

Ruby On Rails in UA/Ruby /Ruby без Rails

2008-08-17 13:37:02 Ответить  
rasfast
Константин
Адрес:
Сообщений: 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 Ответить  
admin
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 Ответить  
rasfast
Константин
Адрес:
Сообщений: 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 Ответить  
admin
Ruslan Voloshin
Адрес: odessa
Сообщений: 1293
Регистр: 2007-03-13
его блог 40 сообщ.
RE: RE: Ruby без Rails
  •  
Тут у нас на рабоет тоже пытались запустить мож райл под руби ентерпрайс и тоже что то не работает он корректно.
------------
Занимаюсь вебом и продвижением сайтов.
2008-08-27 14:23:59 Ответить  
rasfast
Константин
Адрес:
Сообщений: 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 Ответить  
admin
Ruslan Voloshin
Адрес: odessa
Сообщений: 1293
Регистр: 2007-03-13
его блог 40 сообщ.
RE: RE: Ruby без Rails
  •  
попробй дать на весь проект
chmod -R +755 ./app
и попробуй установить в рельсовом приложении

в environment.rb
------------
Занимаюсь вебом и продвижением сайтов.
Назадназад Новыйновый Ответитьответить
Ключевые слова:
Гости: 121 Онлайн: 0
Rambler's Top100
О проекте по всем вопросам обращайтесь на support
Rubyclub.com.ua Copyright © 2007 - 2008