Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Rake Основы разработки на Ruby on Rails

Программа урока

  • Вспоминаем Rake
  • Rake в Rails (команды)
  • Собственные Rake задачи в Rails
  • FileUtils в Rake
  • FileList в Rake

Используемые команды

bin/rails console # запуск консоли
bin/rails server # запуск сервере
bin/rails generate
bin/rails generate scaffold
bin/rails destroy
bin/rails dbconsole # запуск консоли БД
bin/rails runner 'pp User.all' # запуск команды


bin/rails g scaffold User name
bin/rails db:migrate
bin/rails db:seed

bin/rails runner 'pp User.first'
bin/rails runner lib/user.rb

# Rails команды могут запускаться через Rake
# Но не все rails команды могут так запускаться
bin/rails about
bin/rake about

bin/rake dbconsole
# Running via Spring preloader in process 240506
# rake aborted!
# Don't know how to build task 'dbconsole' (See the list of available tasks with `rake --tasks`)

bin/rake assets:precompile
bin/rake assets:clobber
bin/rake assets:clean
bin/rails notes  # вывод всех пометок "TODO" и др. в проекте
bin/rake stats  # статистика проекта, количество строк кода, классов и т.д.
bin/rake timezones

bin/rake time:zones:all

bin/rails users:create

Создание тасок

namespace :users do
  desc 'Creates 5 users'
  task :create => :environment do
    print "Task started...\n"

    5.times do |i|
      User.create(name: "Alice #{i + 1}")
      print '.'
    end

    print "\n...done\n"
  end

  # bin/rails users:update name=vasya
  desc 'Updates user name'
  task update: :environment do
    print "Task started...\n"

    User.find(1).update(name: ENV['name'])

    print "\n...done\n"
  end
end

namespace :users do
  # bin/rails 'users:update[vasya]'
  desc 'Updates user name'
  task :update, [:name] => :environment do |t, args|
    name = args[:name]
    print "Change user name to #{name}"

    User.find(1).update(name: name)

    print "\n...done\n"
  end
end

namespace :manipulate_files do
  desc "Creates file in tmp folder"
  task :create do
    touch "tmp/rake_test.file.rb"
  end

  desc "Show files list"
  task :show do
    # FileList - хелпер Rake
    # https://docs.ruby-lang.org/en/2.2.0/Rake/FileList.html
    FileList.new('config/environments/*.rb') do |file|
      pp file.exclude(/dev/)
    end
  end
end
bin/rails g task
bin/rails g task manipulate_files create
# Вызов таски с аргументами
bin/rails users:update name=vasya
bin/rails 'users:update[vasya]'

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Разработчик на Ruby on Rails
Профессия
c опытом
Создание веб-приложений со скоростью света
2 февраля 5 месяцев

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»
Изображение Тото

Задавайте вопросы, если хотите обсудить теорию или упражнения. Команда поддержки Хекслета и опытные участники сообщества помогут найти ответы и решить задачу