A long-lived project that still receives updates
Shorten index name
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

 Project Readme

ActiveRecord::SimpleIndexName

Shorten index name

Gem Version Build Status Coverage Status Code Climate

Requirements

  • Ruby 2.3+
  • activerecord 5.0+

Supported frameworks

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.timestamps 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::EnableShorten in any migration file, enable simple index name
  • ActiveRecord::SimpleIndexName::DisableShorten
    • When include ActiveRecord::SimpleIndexName::DisableShorten in 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 https://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 🙇

Original idea is http://qiita.com/kamipo/items/6e5a1e238d7cc0611ade (ja)