New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

soulmate_rails

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

soulmate_rails

  • 0.3.2
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

Soulmate Rails Gem Version Build Status Dependency Status

Soulmate Rails is a rails plugin that helps to solve the common problem building auto-completion back-end in rails intuitively. It extends the soulmate gem Soulmate to make it easily pluggable into a rails project.

Getting Started

Installation :

$ gem install soulmate_rails

OR add this to your Gemfile :

gem 'soulmate_rails'

Usage :

Following is an example of how one can use Soulmate Rails for enabling backend autocompletion using redis.

class User < ActiveRecord::Base
  autocomplete :first_name, :score => :calculate_score
  autocomplete :last_name, :score => :id

  def calculate_score
    100 / self.id # simple score calculator
  end
end

1.9.3p385 :001 > User.create(:first_name => 'First1', :last_name => 'Last1')
1.9.3p385 :002 > User.create(:first_name => 'First2', :last_name => 'Last2')
1.9.3p385 :003 > User.create(:first_name => 'First3', :last_name => 'Last3')
1.9.3p385 :004 > User.search_by_first_name('firs')
  => [#<User:0x000000014bb1e8 @new_record=false,
  @attributes={"first_name"=>"First1", "last_name"=>"Last1" "id"=>1},
  @changed_attributes={}>, #<User:0x000000014bb1e9 @new_record=false,
  @attributes={"first_name"=>"First2", "last_name"=>"Last2" "id"=>2},
  @changed_attributes={}>, #<User:0x000000014bb1ea @new_record=false,
  @attributes={"first_name"=>"First3", "last_name"=>"Last3" "id"=>3},
  @changed_attributes={}>]
1.9.3p385 :005 > User.search_by_last_name('last1')
  => [#<User:0x000000014bb1e8 @new_record=false,
  @attributes={"first_name"=>"First1", "last_name"=>"Last1" "id"=>1},
  @changed_attributes={}>]
1.9.3p385 :006 > User.search_by_last_name('las')
  => [#<User:0x000000014bb1e8 @new_record=false,
  @attributes={"first_name"=>"First3", "last_name"=>"Last3" "id"=>3},
  @changed_attributes={}>, #<User:0x000000014bb1e9 @new_record=false,
  @attributes={"first_name"=>"First2", "last_name"=>"Last2" "id"=>2},
  @changed_attributes={}>, #<User:0x000000014bb1ea @new_record=false,
  @attributes={"first_name"=>"First1", "last_name"=>"Last1" "id"=>1},
  @changed_attributes={}>]

The autocomplete method takes 2 arguments :

  • attribute name to use for autocompletion.
  • options that determine how autocompletion works for indexing.

Methods added by autocomplete :

  • Class Methods
    • search_by(attribute, term, options={}) - Generic method to search by an attribute for which an autocomplete was defined.
    • search_by_#{attribute}(term, options={}) - Specific methods for each attribute autocomplete was defined for.
  • Instance Methods
    • update_index_for(attribute, options={})
    • update_index_for_#{attribute} - used in an after_save callback to update index for searching.
    • remove_index_for(attribute)
    • remove_index_for_#{attribute} - used in a before_destroy callback to remove index for searching. Hence you should use destroy as opposed to delete to ensure the callbacks are invoked appropriately by rails and soulmate updates the index.

Options you can provide to autocomplete :

  • :score : This is required. Soulmate uses it for sorting the results (in reverse order, i.e. higher score first). This can be the name of a function or can also be the name of another attribute with integer values.
  • :aliases : This is optional. Soulmate uses this as aliases for the term field and uses it for searching as well. This can be an array of values or the name of a method which returns an array of values.
  • :data : This is optional. This can either be the name of a method which returns data or a hash or a string. Once you perform your search using search_by or search_by_#{attribute} it will set the value of :data corresponding to the object to soulmate_data attr_accessor and can be accessed by calling the soulmate_data accessor on the model object.

Configuration :

Within your rails application inside config/application.rb you can optionally provide redis configuration. Example :

config.soulmate_rails.redis = 'redis://127.0.0.1:6380/0'
# or you can assign an existing instance of Redis, Redis::Namespace, etc.
# config.soulmate_rails.redis = $redis

Alternatively, you can also add configuration in an initializer. Example :

Soulmate.redis = 'redis://127.0.0.1:6380/0'
# or you can assign an existing instance of Redis, Redis::Namespace, etc.
# Soulmate.redis = $redis

Contributing

Reporting an Issue :

Contributing to code :

  • Fork it.
  • Commit your changes ( git commit ).
  • Push to github ( git push ).
  • Open a Pull Request.

License

Soulmate Rails is released under the MIT License

FAQs

Package last updated on 16 Dec 2014

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