Skip to content

Instantly share code, notes, and snippets.

@arthurnn
Created May 25, 2017 18:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save arthurnn/64fa263a88d02d2a909e0ce3fbe957cf to your computer and use it in GitHub Desktop.
Save arthurnn/64fa263a88d02d2a909e0ce3fbe957cf to your computer and use it in GitHub Desktop.
require "bundler/inline"
gemfile(true) do
source "https://rubygems.org"
gem 'bcrypt'
gem "activerecord", "~> 5.0.0"
gem 'sqlite3'
gem 'attr_encrypted', github: 'attr-encrypted/attr_encrypted', require: false
end
require 'active_record'
require 'attr_encrypted'
require 'minitest/autorun'
logger = Logger.new STDOUT
logger.level = 0
ActiveRecord::Base.logger = logger
KEY = SecureRandom.random_bytes(32)
ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:')
ActiveRecord::Schema.define(version: 1) do
self.verbose = false
create_table :users do |t|
t.string :name
t.string :encrypted_email
t.string :encrypted_email_iv
t.timestamps null: true
end
end
class User < ActiveRecord::Base
attr_encrypted :email, key: KEY
end
p ActiveRecord.version
class FooTest < Minitest::Test
def test_email
foo = User.new(name: 'Arthur')
foo.email = 'foo@test.com'
foo.save!
assert_equal 1, User.count
refute_nil foo.encrypted_email
refute_nil User.last.encrypted_email
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment