Как проверить весь проект rails на наличие ошибок компиляции


Я новичок в ruby и rails. Я привык работать в IDEs (Xcode, Visual Studio и т. д.) где я могу выполнять операции "сборка/компиляция" в масштабе всего проекта / рабочей области.

Предположим, что я изменяю несколько файлов ruby в своем проекте rails. Я еще не написал тесты, которые будут осуществлять все мои изменения.

Есть ли способ гарантировать, что все мои *.файлы rb компилируются без непосредственного их использования во время выполнения? Я бы очень хотел выполнить " компиляцию всех моих ruby/erb операция "файлы", чтобы я знал, что в данный момент у меня нет никаких синтаксических ошибок.

Обновить

Наверное, мне следовало упомянуть, что я профессионально пишу код уже 20 лет. Я понимаю, что Ruby не компилируется, как, скажем, C++, но это не значит, что его синтаксис нельзя проверить. В моем случае я решил использовать ruby-lint, чтобы ловить основные синтаксические ошибки без необходимости выполнять код во время выполнения.

5 5

5 ответов:

Ruby-это интерпретируемый язык. Нет никакого этапа компиляции. Пожалуйста, следуйте TDD и напишите свои тесты, прежде чем писать свой код.

Обновление: Поскольку этот ответ был принят, я не могу удалить его, если ОП не примет другой ответ, но люди, которые заходят сюда через поиск Google, пожалуйста, смотрите другие ответы. Это было скорее ехидное замечание, чем ответ. Сообщество Ruby имеет замечательные инструменты для выполнения всех видов статического анализа кода, таких как Rubocop и friends. Около голый минимум, ruby -c выполнит то, что хотел ОП.

Если вы находитесь на Linux или Mac или какой-нибудь забавной коробке windows с командой gnu find, вы можете сделать что-то вроде:

find /your/application_directory -name=*.rb -exec ruby -c {} \;

Это позволит найти все ruby-скрипты в каталоге приложений и запустить на них ruby -c, который выполнит проверку синтаксиса и ответит Syntax OK или сообщением об ошибке, если в скрипте есть ошибка.

Вы также можете создать макрос этого в вашем редакторе, так что при сохранении или нажатии комбинации клавиш он будет запускать ruby-c в файле и выдавать вам результаты. В виме ты можете использовать это в своем .vimrc:

map <Leader>c :w !ruby -c<cr>

Который сопоставляет Leader-c для записи файла и проверки его синтаксиса с помощью ruby -c.

Проверка ваших rake-задач и представлений на наличие синтаксических ошибок может быть немного сложнее, но многие шаблонисты, такие как haml, имеют параметр проверки синтаксиса similiar-C.

Почему вы не можете продолжать использовать IDE типа RubyMine (или его отца IntelliJ)?

Существуют также плагины для текстовых редакторов, которые выделяют синтаксические проблемы, но кто знает, что вы используете. Я использую Sublime Текст 2 для non-интегрированная среда разработки и она поддерживает несколько разновидностей автоматических пылеобразования. Как и эмакс, но я предполагаю, что вы туда не пойдете.

Независимо от того, используете ли вы "реальный" TDD или нет, вам нужно ужесточить свои циклы написания кода и работать более последовательно, чтобы у вас не было шанс накопить такой высокий уровень (низкий уровень?) ошибки в первую очередь, однако. Это верно независимо от языка или окружающей среды.

Вы даже можете сделать

find . -type f -name '*.rb' -or -name '*.ru' -or -name '*.rake' > /tmp/list.txt while read file ; do ruby -c $file done < /tmp/list.txt

Чтобы проверить весь ваш проект

Это однострочный ответ из комментария @Zac, я включил его в качестве ответа, поскольку не все время мы читаем комментарии:

find . | grep ".*\.rb$" | xargs -L 1 ruby -c