ActiveRecord::SimpleIndexName
Shorten index name
Requirements
-
Ruby 2.3+
-
activerecord 5.0+
Supported frameworks
-
or plain activerecord
Installation
Add this line to your application’s Gemfile:
gem 'activerecord-simple_index_name'
And then execute:
$ bundle
Or install it yourself as:
$ gem install activerecord-simple_index_name
Usage
When run rake db:migrate (or rake ar:migrate), index name will be automatically short.
Example
create_table :user_stocks do |t|
t.integer :user_id, null: false
t.integer :article_id, null: false
t. null: false
end
add_index :user_stocks, [:user_id, :article_id]
-
Index name without
activerecord-simple_index_name:index_user_stocks_on_user_id_and_article_id -
Index name with
activerecord-simple_index_name:user_id_and_article_id
Configurations
Usage
ActiveRecord::SimpleIndexName.config.auto_shorten = true
or
ActiveRecord::SimpleIndexName.configure do |config|
config.auto_shorten = true
end
-
auto_shorten: Whether shorten index name -
true(default) : all index names are shorten (e.g.user_id_and_article_id) -
false: all index names are not shorten (e.g.index_user_stocks_on_user_id_and_article_id)
Opt-in/Opt-out
When auto_shorten is enabled, we can disable simple index name in only specified migration. (or when auto_shorten is disabled, we can enable simple index name in only specified migration)
-
ActiveRecord::SimpleIndexName::EnableShorten -
When include
ActiveRecord::SimpleIndexName::EnableShortenin any migration file, enable simple index name -
ActiveRecord::SimpleIndexName::DisableShorten -
When include
ActiveRecord::SimpleIndexName::DisableShortenin any migration file, disable simple index name
Opt-in Example
class AddCategoryIdToArticles < ActiveRecord::Migration
include Activerecord::SimpleIndexName::EnableShorten
def change
add_column :articles, :category_id, :integer
add_index :articles, :category_id
end
end
include ActiveRecord::SimpleIndexName::EnableShorten, use simple index name regardless of whether auto_shorten is true or false
Opt-out Example
class AddArticleIndexToUserStocks < ActiveRecord::Migration
include ActiveRecord::SimpleIndexName::DisableShorten
def change
add_index :user_stocks, :article_id
end
end
include ActiveRecord::SimpleIndexName::DisableShorten, don’t use simple index name regardless of whether auto_shorten is true or false
Development
After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.
Contributing
Bug reports and pull requests are welcome on GitHub at github.com/sue445/activerecord-simple_index_name.
License
The gem is available as open source under the terms of the MIT License.
Special thanks
@kamipo :bow:
Original idea is qiita.com/kamipo/items/6e5a1e238d7cc0611ade (ja)