Code Monkey home page Code Monkey logo

mongoid_token's Introduction

Mongoid::Token - Short snappy tokens for Mongoid documents

Build Status Code Climate

This library is a quick and simple way to generate unique, random tokens for your mongoid documents, in the cases where you can't, or don't want to use slugs, or the default MongoDB ObjectIDs.

Mongoid::Token can help turn this:

http://bestappever.com/video/4dcfbb3c6a4f1d4c4a000012

Into something more like this:

http://bestappever.com/video/8tmQ9p

Getting started

In your gemfile, add:

# For mongoid < 5
gem 'mongoid_token', '~> 3.0.0'

# For mongoid >= 5
gem 'mongoid_token', '~> 4.0.0'

Then update your bundle

$ bundle install

In your Mongoid documents, just add include Mongoid::Token and the token method will take care of all the setup, like so:

class Person
  include Mongoid::Document
  include Mongoid::Token

  field :name

  token
end

And that's it! There's lots of configuration options too - which are all listed below. By default, the token method will create tokens 4 characters long, containing random alphanumeric characters.

Note: Mongoid::Token leverages Mongoid's 'safe mode' by automatically creating a unique index on your documents using the token field. In order to take advantage of this feature (and ensure that your documents always have unique tokens) remember to create your indexes.

Using without Rails

If you're using Mongoid without Rails, remember to:

require 'mongoid_token'

in your app

Finders

By default, the gem will add a convenience find_by_[token name] method, to make it a tiny bit simpler to query by your tokens. If you'd rather it didn't, you can disable these with the skip_finders configuration option.

The methods accept either a single token, or an array of tokens:

Video.find_by_token("x3v98") # If your token was named 'token'
Account.find_by_account_number(["ACC-123456", "ACC-567890"]) # If your token was named 'account_number'

Configuration

Tokens

As of Mongoid::Token 2.0.0, you can now choose between two different systems for managing how your tokens look.

For simple setup, you can use combination of the length and contains, which modify the length and types of characters to use.

For when you need to generate more complex tokens, you can use the pattern option, which allows for very low-level control of the precise structure of your tokens, as well as allowing for static strings, like prefixes, infixes or suffixes.

Length (:length)

This one is easy, it's just an integer.

Example:

token :length => 6 # Tokens are now of length 6
token :length => 12 # Whow, whow, whow. Slow down egghead.

You get the idea.

The only caveat here is that if used in combination with the :contains => :numeric option, tokens may vary in length up to the specified length.

Contains (:contains)

Contains has 7 different options:

  • :alphanumeric - contains uppercase & lowercase characters, as well as numbers
  • :alpha - contains only uppercase & lowercase characters
  • :alpha_upper - contains only uppercase letters
  • :alpha_lower - contains only lowercase letters
  • :numeric - integer, length may be shorter than :length
  • :fixed_numeric - integer, but will always be of length :length
  • :fixed_numeric_no_leading_zeros - same as :fixed_numeric, but will never start with zeros
  • :fixed_hex_numeric - hex integer, but will always be of length :length
  • :fixed_hex_numeric_no_leading_zeros - same as :fixed_hex_numeric, but will never start with zeros

Examples:

token :contains => :alpha_upper, :length => 8
token :contains => :fixed_numeric

Patterns (:pattern)

New in 2.0.0, patterns allow you fine-grained control over how your tokens look. It's great for generating random data that has a requirements to also have some basic structure. If you use the :pattern option, it will override both the :length and :contains options.

This was designed to operate in a similar way to something like strftime, if the syntax offends you - please open an issue, I'd love to get some feedback here and better refine how these are generated.

Any characters in the string are treated as static, except those that are proceeded by a %. Those special characters represent a single, randomly generated character, and are as follows:

  • %s - any uppercase, lowercase, or numeric character
  • %w - any uppercase, or lowercase character
  • %c - any lowercase character
  • %C - any uppercase character
  • %d - any digit
  • %D - any non-zero digit

Example:

token :pattern => "PRE-%C%C-%d%d%d%d" # Generates something like: 'PRE-ND-3485'

You can also add a repetition modifier, which can help improve readability on more complex patterns. You simply add any integer after the letter.

Examples:

token :pattern => "APP-%d6" # Generates something like; "APP-638924"

Field Name (:field_name)

This allows you to change the field name used by Mongoid::Token (default is :token). This is particularly handy when you're wanting to use multiple tokens one a single document.

Examples:

token :length => 6
token :field_name => :sharing_token, :length => 12
token :field_name => :yet_another

Skip Finders (:skip_finders)

This will prevent the gem from creating the extra find_by_* methods.

Example:

token :skip_finders => true

Override to_param (:override_to_param)

By default, Mongoid::Token will override to_param, to make it an easy drop-in replacement for the default ObjectIDs. If needed, you can turn this behaviour off:

Example:

token :override_to_param => false

Retry Count (:retry_count)

In the event of a token collision, this gem will attempt to try three more times before raising a Mongoid::Token::CollisionRetriesExceeded error. If you're wanting it to try harder, or less hard, then this option is for you.

Examples:

token :retry_count => 9
token :retry_count => 0

Notes

If you find a problem, please submit an issue (and a failing test, if you can). Pull requests and feature requests are always welcome and greatly appreciated.

Thanks to everyone that has contributed to this gem over the past year. Many, many thanks - you guys rawk.

Contributors:

Thanks to everyone who has provided support for this gem over the years. In particular: olliem, msolli, siong1987, stephan778, eagleas, and jamesotron.

mongoid_token's People

Contributors

ccahoon avatar eagleas avatar jimsynz avatar lukef avatar mcoms avatar msolli avatar nanamiwang avatar pezholio avatar qqshfox avatar siong1987 avatar stepantubanov avatar tagliala avatar thetron avatar wa0x6e avatar warmwind avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mongoid_token's Issues

Class.clone yields NoMethodError

Hey @thetron, I have some code which clones a class, but for token classes I get an error.

Repro steps:

require 'mongoid'
require 'mongoid_token'

class Person
  include Mongoid::Document
  include Mongoid::Token

  field :name

  token
end

Person.clone

this line yields a NoMethodError.

I can't tell whether self.token = nil is a relic of a previous implementation or I just am missing something. As a work-around, I have added def self.token=(*); end to classes which include mongoid_token, but want to make sure I'm not setting myself up for some headaches down the road.

Thanks!

undefined method `args' in token.rb

The method below in token.rb call super with param *args. However, the args does not exist. In previous version it is inside token(*args) method.

It seems a mistake after extracting it as a method out of token(*args) method.

private
def override_to_param(options)
   self.send(:define_method, :to_param) do
     self.send(options.field_name) || super(*args)
   end
end

mongoid 4 support

s.add_dependency 'mongoid', '~> 3.0'

Guys are you planning to support mongoid 4.0?

I get:

Bundler could not find compatible versions for gem "mongoid":
In snapshot (Gemfile.lock):
mongoid (4.0.0)

In Gemfile:
mongoid_token (>= 0) ruby depends on
mongoid (~> 3.0) ruby

Running bundle update will rebuild your snapshot from scratch, using only
the gems in your Gemfile, which may resolve the conflict.

When trying to use with 4.0

When unique indexes are violated: NoMethodError: undefined method `errors' for nil:NilClass

When using a Mongoid class that uses mongoid_token, if a unique index is violated during insertion, a "NoMethodError" is raised instead of the appropriate error. Simply removing Mongoid::Token from the class results in the appropriate Mongoid error being raised.

This is preventing me from being able to catch the appropriate error and handle the exception. BTW - I'm using the latest 'patch/collisions-define-method' branch.

Here is the stack trace that is raised incorrectly:

NoMethodError: undefined method `errors' for nil:NilClass
  mongoid/persistence.rb:277:in `block in create!'
    fail_validate!(doc) unless doc.insert.errors.empty?
  mongoid/threaded/lifecycle.rb:173:in `_creating'
    yield
  mongoid/persistence.rb:272:in `create!'
    _creating do
  tasks/photo_upload_controller.rb:20:in `upload'
    photo = Photo.create!(photo_params)

uninitialized constant Mongoid::Token error upon installation

Upon following installation instructions, I got an uninitialized constant Mongoid::Token error.

Token declaration was for my user model:

class User
  include Mongoid::Document
  include Mongoid::Timestamps  
  include Mongoid::Token

  FIELDS HERE

  token :length => 6

Rails version 3.2.9, Ruby 1.9.3v327 on x86_64_darwin11.4.2, Mongoid 3.0.14, 3.0.13 and Mongoid_token 1.1.0

ActiveSupport::SecureRandom deprecation warnings in Rails 3.1.0

Given the following model:

class ATest
  include Mongoid::Document
  include Mongoid::Token

  field :name, :type => String
  field :is_true, :type => Boolean

  token :length => 3       
  validates :name, :presence => true
end

And the following spec:

require 'spec_helper'

describe ATest do
  describe 'draft style' do
    it 'is required' do
      style = ATest.create(:name => nil, :is_true => false)
      style.should have(1).errors_on(:name)

      style.name = 'Test Value'
      style.should have(:no).errors_on(:name)
    end

    it 'can be false' do
      style = ATest.create(:name => "Tournament", :is_true => true)
      style.should have(:no).errors_on(:name)
    end
  end
end

then you'll receive the following warning from rspec:

DEPRECATION WARNING: ActiveSupport::SecureRandom is deprecated! Use SecureRandom instead.

If you comment out the Mongoid::Token inclusion, the warning goes away.

We are using Mongoid ~2.3, sorcery ~0.7 and rails 3.1.0

I have tried to find in the mongoid_token source where there are calls to ActiveSupport::SecureRandom methods, but have not been able to trace them down.

Any guidance would be appreciated.

Feature Request: Add rake or inline rails ability to generate tokens

I'm using mongoid_token for my users authorization_token, and it does a great job of generating that token when the users are created. I added this feature though after already having users, so I'd like to be able to generate tokens for those pre-existing users through the rails console or by running a rake command.

Thoughts please?

Cannot find multiple documents by their tokens

Video.find(["x3v98", "kd2o1"])

Returns Mongoid::Errors::DocumentNotFound exception: Document not found for class Video with attributes {:token=>["x3v98", "kd2o1"]}.

It also breaks the default mongoid find by multiple ids:

Video.find(["528af2997e311132ae000003", "510466be72fbd5abf000f937"])

Also returns DocumentNotFound exception: Document not found for class Video with attributes {:token=>["528af2997e311132ae000003", "510466be72fbd5abf000f937"]}.

Add support for tokens generated from patterns

Tokens should also be able to be generated from patterns. Something like:

class Person
    include Mongoid::Document
    include Mongoid::Token

    field :name

    token :pattern => /[0-9]{5}-[A-Za-z]{3}/
end

Consider using randexp to support this.

Conflict with version gem

I love the gem, but unfortunately I can' t use it right now as it is conflicting with the gem we are using for version management.

https://github.com/stouset/version

If I get a chance I will try and dig into it more, but I thought I'd bring it up in the meantime.

No errors are thrown until you try and do something that touches the Version gem's functionality such as the rake tasks.

Rails Admin has_many relations fail to save

I have the following 2 models

class Student < User
  token pattern: "S_%d8"
  belongs_to :parent
end

class Parent < User
  token pattern: "P_%d8"
  has_many :students
end

on Rails_admin Parent Page when I try to save the Parent without any changes I get the following error

Problem: Document not found for class Student with attributes {:token=>[]}.
Summary: When calling Student.find_by with a hash of attributes, all attributes provided must match a document in the database or this error will be raised.

the same problem also exists when I try to add any student to the parent class via Rails admin...

Problem: Document not found for class Student with attributes {:token=>[BSON::ObjectId('54528faf416264e024000000')]}.
Summary: When calling Student.find_by with a hash of attributes, all attributes provided must match a document in the database or this error will be raised.

One Important thing to note is when I add skip_finders: true to Student model every thing works as expected (but without the mongoid_token support for Students of course)

Does not check for collisions with create! method

Hi,

Found something that might be a bug. Models are not checked for collisions when instantiated with create!:

it 'tries to resolve collisions when instantiated with create!' do
  link = Link.create!(url: 'http://example.com/1')

  Link.any_instance.stub(:generate_token).and_return(link.token)

  expect { Link.create!(url: 'http://example.com/2') }
  .to raise_error(Mongoid::Token::CollisionRetriesExceeded)
end

This is happening because create! does not call save like create (without a bang) does.

Using _id field for token

For some models it seems reasonable to just replace _id field with the token. Kind of a feature request. What do you think?

Cannot ensure unique token on embeded documents

I just found that Mongoid currently cannot enforce unique index within of single document (for example a embeds_many relationship).

I'm using embeds_many and set a token to the embeded document:

token field_name: :token, length: 1, contains: :fixed_numeric_no_leading_zeros

Then I generate a lot of embeded documents (more than 10), all of them can be saved successfully, and their tokens have duplications.

Invalid index specification on Page: token, {:unique=>true}

Hello,

I'm very new to Ruby on Rails. I wanted to use Mongoid_Token to generate short URLs. Unfortunately, after installing the gem, and adding the relevant lines in my model class, I get the following error:

Problem:
Invalid index specification on Page: token, {:unique=>true}
Summary:
Indexes in Mongoid are defined as a hash of field name and direction/2d pairs, with a hash for any additional options.
Resolution:
Ensure that the index conforms to the correct syntax and has the correct options.

Valid options are:
background: true|false
drop_dups: true|false
name: 'index_name'
sparse: true|false
unique: true|false

Valid types are: 1, -1, '2d'

Example:
class Band
include Mongoid::Document
index({ name: 1, label: -1 }, { sparse: true })
index({ location: '2d' }, { background: true })
end

Unfortunately, my google-fu didn't help me much here. Any ideas?
If relevant, I'm using Mongoid 3 with Rails 3.2.

CollisionRetriesExceeded even when successful

The gem is working fine locally, but when deployed to Heroku I consistently get CollisionRetriesExceeded exceptions - even though the token is getting generated correctly and the data is successfully saving to MongoHQ.

I don't know if this is related, but the README mentions a config value that no longer exists in Mongoid 3.x To take advantage of this, one must set persist_in_safe_mode = true in your Mongoid configuration.

I've tried changing my Mongoid config to:

options:
        consistency: :eventual
        safe: true

and:

options:
        consistency: :strong
        safe: true

Can i use token as foreign key?

Thanks for this great tool for generating tokens!

Now i have a relation between two collections, for example a company has_many staffs, and a staff belongs_to a company. I'v already add tokens to each model, but when I created a new staff for a company, the foreign key is still using company's object id (_id field), how can i use company's token field as the foreign key?

Cloning mongoid object and saving results in: undefined method `to_sym' for nil:NilClass

When mongoid clones a model object, it copies over all of the fields, but not the instance variables. This results in the @token_field_name instance variable being nil.

When you try to save the cloned model, mongoid_token runs the code "@token_field_name.to_sym" which results in the following exception: (I'm using 1.0.0, but it looks like this would still be an issue in 1.1.0)

undefined method to_sym' for nil:NilClass mongoid_token (1.0.0) lib/mongoid_token.rb:91:increate_token_if_nil'
mongoid_token (1.0.0) lib/mongoid_token.rb:24:in `block in token'

Gem naming

Hello @thetron , and thanks for this plugin, just recently found it out.

Ok, half my OCD, half maybe avoid future confusion and chaos:
I'm going in plugins to suggest correct gem naming:
http://guides.rubygems.org/name-your-gem/

To fix you could remove lib/mongoid_token.rb or add a deprecated message to it.
gem 'mongoid-token'
require 'mongoid/token'
include Mongoid::Token

All good then. Thank you!

I realize you need to create another rubygem, with hyphen and rename the project here.
Up to you, I'm going to do that in a bad named plugin I have, github now stores old urls and redirects, sounds fine.

not working in embed document?

My mongo object embeds several sub-doc, i add token to both the main doc and sub-doc, but token field is not generated for sub-doc. Is this by design, or is there any other things i need do?

Update existing users?

If this has been brought up before, I can't find it, but I've added this gem after having built several users in the app; how do I update them all to have their token generated?

Define Method No Method Error

/home/xwsaw/.rvm/gems/ruby-2.0.0-p0/bundler/gems/mongoid_token-4009f4eefd36/lib/mongoid/token/collision_resolver.rb:28:in alias_method_with_collision_resolution': private methoddefine_method' called fo
r Video:Class (NoMethodError)

This is the error I am getting when I try to run the rails server.

another define_method() issue?

Hey all,

I'm seeing the following error in token.rb on rails 4.0 with mongoid 4.0 (i know .. unsupported).

"implicit argument passing of super from method defined by define_method() is not supported. Specify all arguments explicitly"

It looks like it's related to the super call on token.rb:42. I've been trying to figure out the exact fix here, but banging my head against the wall.

Any suggestions?

What happens if it generates duplicate token?

I like this gem, but what happens if it generates duplicate token???
Also, if all possible combinations are already in db, what happens then? Do user manually have to increase the length of the token?

Multiple tokens on a model seems to not be possible

I just tried adding multiple tokens to an existing User model:

class User
    token :length => 16
    token :length => 6, :contains => :alpha_lower, :field_name => :sharing_token

If I then do

u = User.last
u.save
u.sharing_token
  => "5SeO8IsFSFWOSWyN"
u.token
  => "lmcVQfv1GurWb1ZU"

And then:

User.new.save
  => SystemStackError: stack level too deep

uninitialized constant Mongoid::Token::Collisions

I am often running into random errors with Mongoid::Token, it seems that some of my constants are tried to be resolved from Mongoid::Token::Collisions scope.

Like

uninitialized constant Mongoid::Token::Collisions::ProfilesController
uninitialized constant Mongoid::Token::Collisions::RegistrationsController

Often prefixing my controller class names with :: (::ProfilesController) do help but not always

Actually the problem may come from here : I have model classes that have the same name as a module I use to prefix my controller

class Admin 
  token ...
end

class Admin::ProfilesController < ApplicationController
end
# => uninitialized constant Mongoid::Token::Collisions::ProfilesController

My Stack Trace

activesupport (5.0.0.1) lib/active_support/inflector/methods.rb:283:in `const_get'
activesupport (5.0.0.1) lib/active_support/inflector/methods.rb:283:in `block in constantize'
activesupport (5.0.0.1) lib/active_support/inflector/methods.rb:266:in `each'
activesupport (5.0.0.1) lib/active_support/inflector/methods.rb:266:in `inject'
activesupport (5.0.0.1) lib/active_support/inflector/methods.rb:266:in `constantize'
actionpack (5.0.0.1) lib/action_dispatch/http/request.rb:93:in `controller_class'
actionpack (5.0.0.1) lib/action_dispatch/routing/route_set.rb:44:in `controller'
actionpack (5.0.0.1) lib/action_dispatch/routing/route_set.rb:30:in `serve'
actionpack (5.0.0.1) lib/action_dispatch/journey/router.rb:39:in `block in serve'
actionpack (5.0.0.1) lib/action_dispatch/journey/router.rb:26:in `each'
actionpack (5.0.0.1) lib/action_dispatch/journey/router.rb:26:in `serve'
actionpack (5.0.0.1) lib/action_dispatch/routing/route_set.rb:725:in `call'
rack-attack (5.0.1) lib/rack/attack.rb:147:in `call'
omniauth (1.3.2) lib/omniauth/strategy.rb:186:in `call!'
omniauth (1.3.2) lib/omniauth/strategy.rb:164:in `call'
omniauth (1.3.2) lib/omniauth/strategy.rb:186:in `call!'
omniauth (1.3.2) lib/omniauth/strategy.rb:164:in `call'
rack-tracker (1.1.0) lib/rack/tracker.rb:34:in `call'
rack-utm (0.0.2) lib/rack-utm.rb:59:in `call'
warden (1.2.6) lib/warden/manager.rb:35:in `block in call'
warden (1.2.6) lib/warden/manager.rb:34:in `catch'
warden (1.2.6) lib/warden/manager.rb:34:in `call'
rack (2.0.1) lib/rack/etag.rb:25:in `call'
rack (2.0.1) lib/rack/conditional_get.rb:25:in `call'
rack (2.0.1) lib/rack/head.rb:12:in `call'
rack (2.0.1) lib/rack/session/abstract/id.rb:222:in `context'
rack (2.0.1) lib/rack/session/abstract/id.rb:216:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/cookies.rb:613:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/callbacks.rb:38:in `block in call'
activesupport (5.0.0.1) lib/active_support/callbacks.rb:97:in `__run_callbacks__'
activesupport (5.0.0.1) lib/active_support/callbacks.rb:750:in `_run_call_callbacks'
activesupport (5.0.0.1) lib/active_support/callbacks.rb:90:in `run_callbacks'
actionpack (5.0.0.1) lib/action_dispatch/middleware/callbacks.rb:36:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/executor.rb:12:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/remote_ip.rb:79:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/debug_exceptions.rb:49:in `call'
web-console (3.3.1) lib/web_console/middleware.rb:131:in `call_app'
web-console (3.3.1) lib/web_console/middleware.rb:28:in `block in call'
web-console (3.3.1) lib/web_console/middleware.rb:18:in `catch'
web-console (3.3.1) lib/web_console/middleware.rb:18:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/show_exceptions.rb:31:in `call'
railties (5.0.0.1) lib/rails/rack/logger.rb:36:in `call_app'
railties (5.0.0.1) lib/rails/rack/logger.rb:24:in `block in call'
activesupport (5.0.0.1) lib/active_support/tagged_logging.rb:70:in `block in tagged'
activesupport (5.0.0.1) lib/active_support/tagged_logging.rb:26:in `tagged'
activesupport (5.0.0.1) lib/active_support/tagged_logging.rb:70:in `tagged'
railties (5.0.0.1) lib/rails/rack/logger.rb:24:in `call'
ahoy_matey (1.5.2) lib/ahoy/engine.rb:22:in `call_with_quiet_ahoy'
request_store (1.3.1) lib/request_store/middleware.rb:9:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/request_id.rb:24:in `call'
rack (2.0.1) lib/rack/method_override.rb:22:in `call'
rack (2.0.1) lib/rack/runtime.rb:22:in `call'
activesupport (5.0.0.1) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/executor.rb:12:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/static.rb:136:in `call'
rack (2.0.1) lib/rack/sendfile.rb:111:in `call'
rack-cors (0.4.0) lib/rack/cors.rb:80:in `call'
railties (5.0.0.1) lib/rails/engine.rb:522:in `call'
puma (3.6.0) lib/puma/configuration.rb:225:in `call'
puma (3.6.0) lib/puma/server.rb:578:in `handle_request'
puma (3.6.0) lib/puma/server.rb:415:in `process_client'
puma (3.6.0) lib/puma/server.rb:275:in `block in run'
puma (3.6.0) lib/puma/thread_pool.rb:116:in `block in spawn_thread'
  Rendering /Users/Cyril/.rvm/gems/ruby-2.3.3/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/routing_error.html.erb within rescues/layout
  Rendering /Users/Cyril/.rvm/gems/ruby-2.3.3/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb
  Rendered /Users/Cyril/.rvm/gems/ruby-2.3.3/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (3.9ms)
  Rendered collection of /Users/Cyril/.rvm/gems/ruby-2.3.3/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/routes/_route.html.erb [301 times] (124.3ms)
  Rendered collection of /Users/Cyril/.rvm/gems/ruby-2.3.3/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/routes/_route.html.erb [5 times] (3.0ms)
  Rendered collection of /Users/Cyril/.rvm/gems/ruby-2.3.3/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/routes/_route.html.erb [1 times] (0.6ms)
  Rendered collection of /Users/Cyril/.rvm/gems/ruby-2.3.3/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/routes/_route.html.erb [2 times] (1.0ms)
  Rendered /Users/Cyril/.rvm/gems/ruby-2.3.3/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/routes/_table.html.erb (2.4ms)
  Rendering /Users/Cyril/.rvm/gems/ruby-2.3.3/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb
  Rendered /Users/Cyril/.rvm/gems/ruby-2.3.3/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (2.6ms)
  Rendered /Users/Cyril/.rvm/gems/ruby-2.3.3/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/routing_error.html.erb within rescues/layout (325.7ms)

Mongoid 6 support

Is there any plan/timeline to add support for mongoid 6 and rails 5 ?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.