Core Modules
Active Record
--skip-active-record [-O]
Cable
--skip-action-cable [-C]
# app/channels/application_cable/channel.rb
module ApplicationCable
class Channel < ActionCable::Channel::Base
end
end# app/channels/application_cable/connection.rb
module ApplicationCable
class Connection < ActionCable::Connection::Base
end
end// app/javascript/channels/consumer.js
import { createConsumer } from '@rails/actioncable'
export default createConsumer()// app/javascript/channels/index.js
const channels = require.context('.', true, /_channel\.js$/)
channels.keys().forEach(channels)// app/javascript/packs/application.js
require('channels')# config/application.rb
require 'action_cable/engine'# config/cable.yml
development:
adapter: async
test:
adapter: test
production:
adapter: redis
url: <%= ENV.fetch("REDIS_URL") { 'redis://localhost:6379/1' } %>
channel_prefix: my_app_production# config/environments/production.rb
class Application < Rails::Application
# Mount Action Cable outside main process or domain.
# config.action_cable.mount_path = nil
# config.action_cable.url = 'wss://example.com/cable'
# config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ]
end# test/channels/application_cable/connection_test.rb
require 'test_helper'
class ApplicationCable::ConnectionTest < ActionCable::Connection::TestCase
end# Gemfile
gem 'redis', '~> 4.0'// package.json
{
"dependencies": {
"@rails/actioncable": "^6.0.0"
}
}Mailer
--skip-action-mailer [-M]
# app/mailers/application_mailer.rb
class ApplicationMailer < ActionMailer::Base
default from: '[email protected]'
layout 'mailer'
end<!-- app/views/layouts/mailer.html.erb -->
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
</style>
</head>
<body>
<%= yield %>
</body>
</html># app/views/layouts/mailer.text.erb
<%= yield %># config/application.rb
require 'action_mailer/railtie'# config/environments/development.rb
class Application < Rails::Application
config.action_mailer.raise_delivery_errors = false
config.action_mailer.perform_caching = false
end# config/environments/production.rb
class Application < Rails::Application
config.action_mailer.perform_caching = false
# config.action_mailer.raise_delivery_errors = false
end# config/environments/test.rb
class Application < Rails::Application
config.action_mailer.perform_caching = false
config.action_mailer.delivery_method = :test
endMailbox
--skip-action-mailbox
ActionMailbox depends on ActiveStorage
# config/application.rb
# require 'active_storage/engine'
require 'action_mailbox/engine'Storage
--skip-active-storage
// app/javascript/packs/application.js
require('@rails/activestorage').start()ActionMailbox and ActionText depend on ActiveStorage
# config/application.rb
require 'active_storage/engine'
# require 'action_mailbox/engine'
# require 'action_text/engine'# config/environments/development.rb
class Application < Rails::Application
config.active_storage.service = :local
end# config/environments/production.rb
class Application < Rails::Application
config.active_storage.service = :local
end# config/environments/test.rb
class Application < Rails::Application
config.active_storage.service = :test
end# config/storage.yml
local:
service: Disk
root: <%= Rails.root.join('storage') %>
test:
service: Disk
root: <%= Rails.root.join('tmp/storage') %># .gitignore
/storage/*
!/storage/.keep# Gemfile
# gem 'image_processing', '~> 1.2'// package.json
{
"dependencies": {
"@rails/activestorage": "^6.0.0"
}
}Text
--skip-action-text
ActionText depends on ActiveStorage
# config/application.rb
# require 'active_storage/engine'
require 'action_text/engine'Last updated