Ruby exec «mysql -u root… <some.sql» не работает

0

В ruby-1.8.7-p302, когда я делаю

exec "mysql -u root --password=****** onc_test < support/submission.sql"

Я получаю неожиданный выход, независимо от того, выполняю ли я его в Rails, Rails консоли или IRB. Я бегу mysql Ver 14.14 Distrib 5.1.53, for apple-darwin10.4.0 (i386) using readline 6.1

Кстати,

exec "mysqldump -u root --password=****** onc_test > support/submission.sql"

отлично работает.

Теги:
exec

2 ответа

2
Лучший ответ

Я собираюсь размышлять о том, может ли exec обернуть его тем, что его нарушает.

Вы пытались использовать обратные ссылки?

`mysql -u root --password=****** onc_test < support/submission.sql`

Проверьте, что вывод

  • 0
    Это прекрасно работает, но все еще не с exec. Что exec может обернуть это?
  • 0
    Согласно этой статье, кажется, что exec заменяет текущий процесс ruby или rails этим, и это вызывает некоторые проблемы (я предполагаю). Вы пробовали с Kernel :: system вместо этого? - blog.jayfields.com/2006/06/ruby-kernel-system-exec-and-x.html
Показать ещё 1 комментарий
1

exec вызывает немедленный выход, потому что это то, что он делает. Он немедленно выходит из рубинового процесса. Из документа Kernel на rubydoc:

Заменяет текущий процесс, запустив данную внешнюю команду.

Используйте backticks или system, если вы хотите сохранить свой рубиновый процесс. Что касается импорта mysql не работает, попробуйте дать ему абсолютный путь к дампу sql.

  • 1
    Да, я использовал абсолютный путь с Rails.root, но я удалил его, когда попробовал его с обычным ruby. Спасибо за ответ, ваш тоже правильно (извините, я могу выбрать только один).
  • 0
    не проблема спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню