machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home

Основные функции в Rails 6

Дата публикации Oct 3, 2019

Ruby on Rails развивался на протяжении многих лет и привлекал свою долю любви и ненависти - но одно можно сказать наверняка, с тем вниманием, которое он привлекает, и количеством людей, способствующих этому - он здесь, чтобы остаться!

Теперь давайте рассмотрим некоторые основные функции по частям.

Почтовый ящик действий

ActionMailboxэто захватывающая новая структура, которая позволяет вам направлятьвходящийпочта впочтовые ящики типа контроллерадля обработки. Эта функция, извлеченная из Basecamp, готова к использованию в Rails 6. Электронные письма обрабатываются через Active Record и хранятся в облаке через Active Storage и могут быть отправлены в один или несколько почтовых ящиков.

Вот небольшой пример, чтобы понять, как использовать Action Mailbox:

COMMENTS_REGEX = /^comment\+(.+)@example\.com/i

# app/mailboxes/application_mailbox.rb
class ApplicationMailbox < ActionMailbox::Base
routing COMMENTS_REGEX => :comments
end

# app/mailboxes/comments_mailbox.rb
class CommentsMailbox < ApplicationMailbox
def process
user = User.find_by(email: mail.from)
post_uuid = COMMENTS_REGEX.match(mail.to)[1]

post = Post.find_by(uuid: post_uuid)
post.comments.create(user: user, content: mail.body)
end
end

Кроме того, новый способ настройки электронной почты заключается в следующем (на примере Sendgrid.

# config/environments/production.rb
config.action_mailbox.ingress = :sendgrid

Если вы хотите изучить это подробнее, у Rails уже есть руководство по этому вопросу.Вот,

Текст действия

Action Text - это еще одно извлечение из кода Basecamp. По словам его создателей,Текст действиясобирается сделать написание, редактирование и отображение текста в приложении Rails «супер легким» или «перенести его на следующий уровень».

Установка:

rails action_text:install

# app/models/message.rb
class Message < ApplicationRecord
has_rich_text :content
end

Вы можете исследоватьТекст действияболее подробно в официальной документации,Вот,

Несколько баз данных

Еще одна замечательная особенность Rails 6.0 - поддержка нескольких одновременных подключений к базе данных. Это новый, простой API для реализации этого без необходимости углубляться в Active Record.

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

Итак, вот как ваш новыйdatabase.ymlфайл будет выглядеть:

development:
primary:
database: my_primary_db
user: root
primary_replica:
database: my_primary_db
user: ro_user
replica: true
animals:
database: my_animals_db
user: root
animals_replica
database: my_animals_db
user: ro_user
replica: true

Вот интересные способы указать, как переключаться на разные базы данных:

class AnimalsModel < ApplicationRecord
self.abstract_class = true

connects_to database: { writing: :animals_primary, reading: :animals_replica }
end

class Dog < AnimalsModel
# connected to both the animals_primary db for writing and the animals_replica for reading
end

Здесьофициальная страница GitHub, что также хорошо документировано.

Параллельное тестирование

Предполагая, что вы используете модели TDD и BDD для разработки (написание тестовых примеров перед написанием логики), вы заметили бы, что ваши тестовые наборы занимают все больше и больше времени по мере роста приложения.

Чтобы включить распараллеливание в ваших тестовых наборах, просто добавьте следующее кtest_helper.rb

class ActiveSupport::TestCase
parallelize_setup do |worker|
# setup databases
end

parallelize_teardown do |worker|
# cleanup databases
end

parallelize(workers: :number_of_processors)
end

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

Zeitwerk

С этой версией Rails был представлен новый загрузчик кода - Zeitwerk. Он обещает загружать классы и модули вашего проекта по требованию, а это значит, что вам не нужно писать требующие вызовы для ваших собственных файлов. Чтобы включить его в Rails 6, вы можете сделать следующее:

config.autoloader = :zeitwerk

Вы можете прочитать больше оZeitwerk здесь,

генеральный

Rails 6 требует Ruby 2.5.0 или новее

Чтобы перейти на Rails 6, мы должны перейти на Ruby 2.5+, что вполне очевидно.

Является ли Rails 6 хорошим обновлением?

По правде говоря, и наверняка Rails 6 можно представить как заслуживающее внимания обновление, однако немногие считают это явным преимуществом. Поскольку Ruby on Rails существует довольно давно, лишь немногие люди ожидают прогрессивных изменений, однако его шестое проявление несет в себе немало информации.

Пожалуйста, прочитайтеполная версия заметки,

Оригинальная статья

Footer decor

© machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map