Skip to content

Instantly share code, notes, and snippets.

Avatar
🖤

James Lafa jameslafa

🖤
View GitHub Profile
@jameslafa
jameslafa / database_cleaner.rb
Created Jan 30, 2016
Database cleaner with Rspec and a javascript engive
View database_cleaner.rb
RSpec.configure do |config|
config.before(:suite) do
DatabaseCleaner.clean_with(:truncation)
end
config.before(:each) do
DatabaseCleaner.strategy = :transaction
end
@jameslafa
jameslafa / application_flashes.html.erb
Created Dec 16, 2015
Bootstrap 4 alerts with rails 4.2
View application_flashes.html.erb
<% if flash.any? %>
<div class="row flashes">
<div class="col-md-8 col-md-offset-2">
<% flash.each do |msg_type, message| %>
<%= flash_message(msg_type, message) %>
<% end %>
</div>
</div>
<% end %>
@jameslafa
jameslafa / user.rb
Created Dec 9, 2015
Transfert enumerator accessors to related model
View user.rb
class User < ActiveRecord::Base
belongs_to :organization
Organization.categories.keys.each do |category|
define_method("#{category}?") do
organization.send("#{category}?")
end
end
end
@jameslafa
jameslafa / controller.rb
Created Apr 16, 2015
FactoryGirl attribute_for does not create associations for obvious performance reason. However, sometime it is useful to get all attributes with ids of association to test a POST#create request for example. To enable, just create a macro in your spec/support folder with the following content. Then call attributes_with_foreign_keys instead of att…
View controller.rb
module ControllerMacros
def attributes_with_foreign_keys(*args)
FactoryGirl.build(*args).attributes.delete_if do |k, v|
["id", "type", "created_at", "updated_at"].member?(k)
end
end
end
RSpec.configure do |config|
config.include ControllerMacros, :type => :controller
View Gemfile
# Debugging in the browser
gem 'better_errors'
gem 'binding_of_caller'
gem 'meta_request'
gem 'quiet_assets' # Remove useless logs
# Deploying
gem 'capistrano'
gem 'capistrano-rails'
gem 'capistrano-bundler' # Run bundle install while deploying
@jameslafa
jameslafa / Install_rails-erd.txt
Last active Aug 29, 2015
Install rails-erd to generate models diagrams
View Install_rails-erd.txt
1. Install xquartz : https://xquartz.macosforge.org (no need to restart)
2. brew install cairo pango
3. brew install graphviz --with-pangocairo (it's important to install graphviz after cairo and pango)
4. bundle exec erd
@jameslafa
jameslafa / unit_test.coffee
Created Jun 11, 2014
AngularJS: serve different responses with $httpBackend inside the same test (auto retry for example)
View unit_test.coffee
# More details on https://blog.james-lafa.fr/angularjs-how-to-test-a-retry-after-http-error-with-httpbackend/
sessionCalls = 0
$httpBackend.when('POST', '/sessions').respond( (method, url, data, headers) ->
if sessionCalls == 0
sessionCalls++
return [200, {"response": 1}, {}]
else
sessionCalls++
return [200, {"response":0,"auth_token":"HK7i6DRncWdBmq"}, {}]
@jameslafa
jameslafa / test-directive.coffee
Created Jun 5, 2014
AngularJS - Unit testing a directive using promises
View test-directive.coffee
describe "UT: MyDirective", ->
$scope = undefined
$element = undefined
$q = undefined
html = '<div my-directive></div>'
# Compile the directive to generate the html code and get the scope
compileDirective = () ->
@jameslafa
jameslafa / _footer.html.erb
Created May 27, 2014
Rails 4 - Google analytics with Turbolinks
View _footer.html.erb
@jameslafa
jameslafa / mixpanel.coffee
Last active Dec 21, 2015
AngularJS MixPanel mock for testing
View mixpanel.coffee
/*
* author: @jameslafa
* More details on http://blog.james-lafa.fr/angularjs-how-to-mock-mixpanel-inside-for-your-tests/
*/
class MixpanelMock
debug = false
log: (event, data) ->
if @debug