Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

mobility-actiontext

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mobility-actiontext

  • 1.1.1
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

Mobility Action Text

Gem Version Build Status

Translate Rails Action Text rich text with Mobility.

Installation

Add this line to your application's Gemfile:

gem 'mobility-actiontext'

And then execute:

$ bundle install

Or install it yourself as:

$ gem install mobility-actiontext

Make sure that Action Text is installed, then run this migration:

class TranslateRichTexts < ActiveRecord::Migration[6.1]
  def change
    # or null: true to allow untranslated rich text
    add_column :action_text_rich_texts, :locale, :string, null: false

    remove_index :action_text_rich_texts,
                 column: [:record_type, :record_id, :name],
                 name: :index_action_text_rich_texts_uniqueness,
                 unique: true
    add_index :action_text_rich_texts,
              [:record_type, :record_id, :name, :locale],
              name: :index_action_text_rich_texts_uniqueness,
              unique: true
  end
end

Usage

# app/models/message.rb
class Message < ApplicationRecord
+  extend Mobility
+
-  has_rich_text :content
+  translates :content, backend: :action_text
end

Plain text

Although the main purpose of the action_text_rich_texts table is to store rich text, this gem allows using it for plain text as well. This could be useful to consolidate all text in a single table and to remove the need to migrate data when converting between one and the other.

# app/models/message.rb
class Message < ApplicationRecord
   extend Mobility

+  translates :title, backend: :action_text, plain: true
   translates :content, backend: :action_text
end

Implementation note

Action Text's rich text content is saved in its own model that can be associated with any existing Active Record model using a polymorphic relation. Likewise, Mobility's KeyValue backend allows to translate any model using a polymorphic relation. This gem makes use of this similarity by combining both features in a single step, thus offering rich text "for free", i.e. in theory at no extra performance cost compared to untranslated rich text or translated plain text.

This is done through the Mobility::Backends::ActionText::Translation model extending ActionText::RichText. This model is backed by Action Text's existing action_text_rich_texts table and its existing name, body and record attributes, to which is added a new locale attribute.

Read more on the genesis of this gem.

Development

After checking out the repo, run bundle install to install dependencies.

Execute tests by running:

cd test_app
bundle install
bundle exec rails test

To release a new version, update lib/mobility/action_text/version.rb and CHANGELOG.md, run bundle && cd test_app && bundle, commit, then run bundle exec rake release. This will create a git tag for the version, push git commits and the created tag, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/sedubois/mobility-actiontext.

License

The gem is available as open source under the terms of the MIT License.

FAQs

Package last updated on 03 Apr 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc