rails-contact
rails-contact is a mountable Rails engine to manage contacts in your app, with optional Elasticsearch search and Google Contacts sync.
What you get
- Contact CRUD screens and controller
- Local contact schema (emails, phones, addresses)
- CSV importer
- Elasticsearch search backend (with DB fallback)
- Google sync service scaffolding
- Install, migration, view, and controller generators
1) Install the gem
gem "rails-contact"
bundle install
2) Run generators
rails generate rails:contact:install
rails generate rails:contact:contact Contact
Optional override generators (Devise-style customization):
rails generate rails:contact:views
rails generate rails:contact:controllers
Then migrate:
rails db:migrate
3) Mount routes (clean paths)
Use either:
mount Rails::Contact::Engine => "/contacts", as: "rails_contact"
or:
rails_contact_for :contacts
With this setup, paths are:
/contacts(index)/contacts/new/contacts/:id
No /contacts/contacts duplication.
4) Configure
Generated initializer: config/initializers/rails_contact.rb
Rails::Contact.configure do |config|
config.search_backend = :elasticsearch
config.elasticsearch_url = ENV.fetch("ELASTICSEARCH_URL", "http://127.0.0.1:9200")
config.google_sync_enabled = false
config.google_max_contacts = 25_000
config.rolling_window_sort = :updated_at
end
CSV import
rake rails_contact:import_csv CSV_PATH=/absolute/path/to/eq.csv
Utility tasks
rake rails_contact:reindexrake rails_contact:sync_google
Test
bundle exec ruby -Itest -e 'Dir["test/**/*_test.rb"].sort.each { |f| require File.expand_path(f) }'
Release
bundle exec rake build
bundle exec rake release
RubyGems MFA is required.