2013-11-21 3 views
2

У меня есть приложение, и я запускаю его локально. Я могу создать другую версию приложения в rails console, однако я хочу иметь интерфейс командной строки для запускающего приложения, с которым я могу взаимодействовать как с веб-интерфейсом, так и с консолью.Исследуйте рабочую среду сервера Rails из консоли

В идеале я запускаю rails s, а затем могу играть с переменными в этой среде.

ответ

7

Вы не можете сделать это с помощью ванили Rails. Каждый раз, когда вы вводите railsserver или console), вы загружаете совершенно новый экземпляр приложения, который не имеет состояния ни с каким другим экземпляром.

Однако, если вы установите чрезвычайно полезный камень Pry, вы можете ввести binding.pry в любой момент вашего приложения (внутри действия или модели или вида). Когда поток программы попадает на ваш binding.pry, экземпляр упадет в интерактивную оболочку, и вы сможете проверить состояние своего серверного процесса. Это примерно так же близко, как вы можете дойти до того, что вы пытаетесь сделать.

+0

@meager - Я должен вам голосовать по этому поводу. Дайте мне два часа, и вы получите 1-го от меня. :) – CDub

+0

Да, похоже, это то, что я искал! Спасибо –

+1

@ElijahMurray Просто помните, что ваш сервер будет заблокирован, пока вы не прекратите сеанс 'pry'. Ваш браузер будет висеть до тех пор, пока он не истечет. Чтобы остановить ваш интерактивный 'pry'ing, нажмите' ctrl-d'. – meagar

1

Если я правильно читаю ваш вопрос, это принято делать.

У вас может быть rails s, работающий в одном окне терминала в каталоге приложения, а затем rails c, работающий в другом окне терминала в том же каталоге приложений.

Затем вы можете изменять объекты в БД, которые будут отображаться в веб-интерфейсе.

+0

Я думал, что это сработало - может быть, я ничего не делаю? Я запускаю сервер, затем запускаю консоль, но если я проверю, существуют ли мои объекты в консоли (объекты, созданные через веб-интерфейс), они этого не делают. т.е. в пользовательском интерфейсе создается «модель приложения», но когда я вызываю «приложение» или «приложение @», его не существует в консоли. –

+1

@Elijah Нет, как вы сказали в этом вопросе, консоль и сервер - это два полностью отдельных экземпляра вашего приложения. – meagar

+0

Вправо - все переменные являются локальными для пользовательского интерфейса, а точнее, этот поток действий в пользовательском интерфейсе. Например, если вы создаете «Пользователь» в приложении и сохраняете его как «@ user», вы можете найти этого пользователя на консоли, выполнив «User.last». – CDub

0

Отвечая на вопрос "Я люблю pry !!!" - вы обычно спрашиваете, как «отлаживать» ваше приложение. Таким образом, если вы установите RubyMine (и несколько драгоценных камней, таких как debug_inspector, debugger, debugger-linecache, debugger-ruby_core_source, pry-debugger, & ruby-debug-ide), вы можете запустить rails server из конфигурации отладки RubyMine.

Оттуда вы можете поставить точку останова, где бы вы заглянули. И вы можете запускать заявления в RubyMine, чтобы узнать, что происходит. И RubyMine создает потрясающую платформу для рефакторинга и автоматического тестирования. Нет аффилированности; просто предоставляя больше ответов на этот вопрос.

Смежные вопросы