Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Общие вопросы > с PHP на Ruby (MySql, условия и тд)


Автор: DikShv 19.1.2010, 08:07
Подскажите альтернативные действия
1. по MySql 
РНР
Код

if($c=@mysql_connect($HostNm[$sel_db], $UsNm[$sel_db], $Pass[$sel_db])){

Я сделал так (Ruby)
Код
s = Mysql.new(HostNm[x], UsNm[x], Pass[x], DBNm[x]) rescue error=1
      if error!=1


2. по MySql 
PHP
Код

if(!mysql_query("INSERT INTO tpeodat (".$pole_tpeodat[$i].", server) VALUES(".$values_tpeodat[$i].", ".$sel_db.")")){

Я сделал так (Ruby)
Код

m.query("INSERT INTO tpeodat2 (#{pole_tpeodat[i]}, server) VALUES(#{values_tpeodat[i]}, #{x})") rescue error=1
            if error==1


3. есть ли альтернатива символу @ в Ruby или только исключения? Допустим в вопросе 2 имеются дубликаты ключей в tpeodat2 и ключ нельзя убирать а дубликаты просто должны проскакивать и по условию считать сколько занесено сколько нет нашел выход только через rescue error=1

4. Подскажите есть ли аналог функции unset в РНР

Автор: Simpliest 19.1.2010, 13:31
Цитата(DikShv @  19.1.2010,  07:07 Найти цитируемый пост)
есть ли альтернатива символу @

За его использование и в PHP стреляют. Ты хочешь его в Ruby иметь?

Автор: DikShv 19.1.2010, 13:55
Мне нужно что бы скрипт не вылетал при ошибке которую не избежать. в PHP его можно использовать если критически нужна допустим как в моем случае

Автор: Simpliest 19.1.2010, 13:58
DikShv, ты ошибаешься. И в PHP в твоем случае он не нужен.
Обработка ошибок - это часть приложения. И этим необходимо заниматься.

@ всего лишь подавляет вывод сообщения. Но!!! саму ошибку не подавляет и не устраняет.

Автор: DikShv 19.1.2010, 14:16
Цитата(Simpliest @ 19.1.2010,  13:58)
DikShv, ты ошибаешься. И в PHP в твоем случае он не нужен.
Обработка ошибок - это часть приложения. И этим необходимо заниматься.

@ всего лишь подавляет вывод сообщения. Но!!! саму ошибку не подавляет и не устраняет.

согласен что можно ошибку и подавить настройками
но вот допустим по второй моей теме
Код

if(!mysql_query("INSERT INTO tpeodat (".$pole_tpeodat[$i].", server) VALUES(".$values_tpeodat[$i].", ".$sel_db.")")){

тут выскакивает дубликат ключей и легче его подавить  ошибку чем ее контролировать т.к. это ошибка не кода а дубликатами записей в БД на разных серверах

вопрос возможно ли подавить в Ruby? 
Ну и по второму вопроссу

Автор: Simpliest 19.1.2010, 14:23
Цитата(DikShv @  19.1.2010,  13:16 Найти цитируемый пост)
тут выскакивает дубликат ключей и легче его подавить  ошибку чем ее контролировать т.к. это ошибка не кода а дубликатами записей в БД на разных серверах

А может выскочить и не дубликат. Но поскольку ты тупо не обработал ошибку - ты об этом не знаешь.

Поэтому надо обрабатывать!!! ошибку, и если она является ошибкой дублирования ключей, то согласно логики своей программы ты можешь продолжать выполнение. А если это какая-то другая ошибка - то и реакция должна быть другой.

Тебе не смешно, что тебя с твоими 6тью годами стажа учит фактически новичек?

Автор: DikShv 19.1.2010, 14:32
Заглушки я ставлю всегда после отладки на конечную версию так что знаю точно что там может выскочить
и пишу так что бы не выскакивало нечего и где нужно они обрабатываются, а где нет глушатся т.к. если все обработать что нужно и не нужно будит потеря в производительности так что не нужно меня учить что и как обрабатывать в РНР лучше скажите как заглушку в ruby поставить 

и да в том скрипте кроме как дубликата нечего не может быть)))

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