www.jsiegel.com
Open in
urlscan Pro
2a00:1450:400e:801::2013
Public Scan
URL:
http://www.jsiegel.com/
Submission: On September 16 via api from US — Scanned from DE
Submission: On September 16 via api from US — Scanned from DE
Form analysis
0 forms found in the DOMText Content
Diese Website verwendet Cookies von Google, um Dienste anzubieten und Zugriffe zu analysieren. Deine IP-Adresse und dein User-Agent werden zusammen mit Messwerten zur Leistung und Sicherheit für Google freigegeben. So können Nutzungsstatistiken generiert, Missbrauchsfälle erkannt und behoben und die Qualität des Dienstes gewährleistet werden.Weitere InformationenOk JSIEGEL.COM JONATHAN SIEGEL'S BLOG. COVERING RUBY ON RAILS, LINUX, GADGETS AND PEEVES. Classic * Classic * Flipcard * Magazine * Mosaic * Sidebar * Snapshot * Timeslide 1. 2. Jan 6 RAILSAPPS COMPOSER HEROKU DEPLOY ISSUE Rails Composer helps get a standard Rails app off and running. If you're starting a new Rails app, you should check it out. Every time I've looked at Composer, they've added something new. This time I tried out their Heroku integration (they prep a Heroku-ready deploy, including precompiling your assets). If you try to do this out of the box, you'll run into the error I've included at the end of the post (what likely brought you here). The issue? It's when Composer runs: RAILS_ENV=production rake assets:precompile The error tells us the problem is in devise's initializer: config/initializers/devise.rb:15:in `block in ' So we open up and see on line 15 config/initializers/devise.rb: domain_name: <%= ENV["DOMAIN_NAME"] %> Ah... so we just need to set a domain before we run Composer (or rerun our precompile command above). Just set a domain name into your environment, rerun and you are done: export DOMAIN_NAME="mydomain.com" --- rake aborted! TypeError: no implicit conversion of nil into String /Users/jonathan/Projects/DoneThis/config/initializers/devise.rb:15:in `+' /Users/jonathan/Projects/DoneThis/config/initializers/devise.rb:15:in `block in ' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/devise-3.5.3/lib/devise.rb:282:in `setup' /Users/jonathan/Projects/DoneThis/config/initializers/devise.rb:3:in `' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:268:in `load' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:268:in `block in load' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:240:in `load_dependency' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:268:in `load' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/railties-4.2.5/lib/rails/engine.rb:652:in `block in load_config_initializer' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/notifications.rb:166:in `instrument' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/railties-4.2.5/lib/rails/engine.rb:651:in `load_config_initializer' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/railties-4.2.5/lib/rails/engine.rb:616:in `block (2 levels) in ' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/railties-4.2.5/lib/rails/engine.rb:615:in `each' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/railties-4.2.5/lib/rails/engine.rb:615:in `block in ' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/railties-4.2.5/lib/rails/initializable.rb:30:in `instance_exec' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/railties-4.2.5/lib/rails/initializable.rb:30:in `run' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/railties-4.2.5/lib/rails/initializable.rb:55:in `block in run_initializers' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/railties-4.2.5/lib/rails/initializable.rb:44:in `each' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/railties-4.2.5/lib/rails/initializable.rb:44:in `tsort_each_child' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/railties-4.2.5/lib/rails/initializable.rb:54:in `run_initializers' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/railties-4.2.5/lib/rails/application.rb:352:in `initialize!' /Users/jonathan/Projects/DoneThis/config/environment.rb:5:in `' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:274:in `require' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:274:in `block in require' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:240:in `load_dependency' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:274:in `require' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/railties-4.2.5/lib/rails/application.rb:328:in `require_environment!' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/railties-4.2.5/lib/rails/application.rb:457:in `block in run_tasks_blocks' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/sprockets-rails-3.0.0/lib/sprockets/rails/task.rb:62:in `block (2 levels) in define' Tasks: TOP => environment (See full trace by running task with --trace) Posted 6th January 2016 by Upgrade to a Google+ profile 0 ADD A COMMENT 3. Dec 25 RAILS COMPOSER RAILS-STRIPE-MEMBERSHIP-SAAS If you're starting a Rails app, you're going to immediately want to leverage the "conventional" way of adding Users, Authentication, Permissions, Billing, and much more. You can do this all by hand, or you can use the well-maintained Rails Composer templates that do all of this for you with a bunch of best practices mixed in. The whole project is maintained by Daniel Kehoe. Many thanks Daniel! I have used Composer to kick-start my sideproject Rails apps. It lets me, as a sole contributor, get really far along the way to proving an idea or getting something up and running to give gifts to my kids. I just cracked open Composer again and was delighted to see lots of updates and a good deal more girth behind the starter apps. I picked a rails-stripe-membership-saas starter and hit a snag along the way. The issue appears when Composer creates an Admin User. This is a cool helper, but in the case of a Stripe project, the new user code interacts somewhere in its depths with Stripe (looks like it creates plans in Stripe when the first user is created if the plans don't already exist). Anyway--since I didn't know any better, I hadn't set a STRIPE_API_KEY variable in my environment. So the admin user create code fails because Stripe's API is inaccessible. I include the full error below in case this helps anyone's search mojo. The solution is easy. Go to stripe, grab your Test Publishable API Key and toss it into the environment before you run the Composer. Then add the key to your environment and rerun Composer: export STRIPE_API_KEY=sk_test_XXX Note you can cheat and just run the failing command instead: rake db:reset It'll get you to the same place. Happy hacking! --- CREATED ADMIN USER: user@example.com rake aborted! Stripe::AuthenticationError: You did not provide an API key, though you did set your Authorization header to "Bearer". Using Bearer auth, your Authorization header should look something like 'Authorization: Bearer YOUR_SECRET_KEY'. See https://stripe.com/docs/api#authentication for details, or we can help at https://support.stripe.com/. /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/stripe-1.20.1/lib/stripe.rb:247:in `handle_api_error' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/stripe-1.20.1/lib/stripe.rb:139:in `rescue in request' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/stripe-1.20.1/lib/stripe.rb:125:in `request' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/stripe-1.20.1/lib/stripe/api_operations/request.rb:15:in `request' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/stripe-1.20.1/lib/stripe/api_operations/request.rb:37:in `request' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/stripe-1.20.1/lib/stripe/api_resource.rb:24:in `refresh' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/stripe-1.20.1/lib/stripe/api_resource.rb:31:in `retrieve' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/payola-payments-1.3.2/app/services/payola/create_plan.rb:7:in `call' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/payola-payments-1.3.2/app/models/concerns/payola/plan.rb:23:in `create_stripe_plan' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:432:in `block in make_lambda' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:164:in `call' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:164:in `block in halting' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:504:in `call' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:504:in `block in call' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:504:in `each' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:504:in `call' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:92:in `__run_callbacks__' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:778:in `_run_create_callbacks' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/callbacks.rb:306:in `_create_record' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/timestamp.rb:57:in `_create_record' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/persistence.rb:504:in `create_or_update' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/callbacks.rb:302:in `block in create_or_update' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:117:in `call' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:117:in `call' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:555:in `block (2 levels) in compile' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:505:in `call' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:505:in `call' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:92:in `__run_callbacks__' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:778:in `_run_save_callbacks' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/callbacks.rb:302:in `create_or_update' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/persistence.rb:142:in `save!' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/validations.rb:43:in `save!' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/attribute_methods/dirty.rb:29:in `save!' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/transactions.rb:291:in `block in save!' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/transactions.rb:351:in `block in with_transaction_returning_status' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `block in transaction' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/connection_adapters/abstract/transaction.rb:184:in `within_new_transaction' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `transaction' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/transactions.rb:220:in `transaction' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/transactions.rb:348:in `with_transaction_returning_status' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/transactions.rb:291:in `save!' /Users/jonathan/Projects/DoneThis/app/services/create_plan_service.rb:8:in `call' /Users/jonathan/Projects/DoneThis/db/seeds.rb:10:in `' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:268:in `load' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:268:in `block in load' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:240:in `load_dependency' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:268:in `load' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/railties-4.2.5/lib/rails/engine.rb:547:in `load_seed' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/tasks/database_tasks.rb:250:in `load_seed' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/railties/databases.rake:183:in `block (2 levels) in ' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/railties/databases.rake:142:in `block (2 levels) in ' RestClient::Unauthorized: 401 Unauthorized /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/rest-client-1.8.0/lib/restclient/abstract_response.rb:74:in `return!' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/rest-client-1.8.0/lib/restclient/request.rb:495:in `process_result' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/rest-client-1.8.0/lib/restclient/request.rb:421:in `block in transmit' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/rest-client-1.8.0/lib/restclient/request.rb:413:in `transmit' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/rest-client-1.8.0/lib/restclient/request.rb:176:in `execute' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/rest-client-1.8.0/lib/restclient/request.rb:41:in `execute' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/stripe-1.20.1/lib/stripe.rb:213:in `execute_request' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/stripe-1.20.1/lib/stripe.rb:126:in `request' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/stripe-1.20.1/lib/stripe/api_operations/request.rb:15:in `request' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/stripe-1.20.1/lib/stripe/api_operations/request.rb:37:in `request' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/stripe-1.20.1/lib/stripe/api_resource.rb:24:in `refresh' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/stripe-1.20.1/lib/stripe/api_resource.rb:31:in `retrieve' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/payola-payments-1.3.2/app/services/payola/create_plan.rb:7:in `call' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/payola-payments-1.3.2/app/models/concerns/payola/plan.rb:23:in `create_stripe_plan' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:432:in `block in make_lambda' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:164:in `call' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:164:in `block in halting' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:504:in `call' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:504:in `block in call' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:504:in `each' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:504:in `call' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:92:in `__run_callbacks__' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:778:in `_run_create_callbacks' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/callbacks.rb:306:in `_create_record' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/timestamp.rb:57:in `_create_record' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/persistence.rb:504:in `create_or_update' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/callbacks.rb:302:in `block in create_or_update' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:117:in `call' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:117:in `call' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:555:in `block (2 levels) in compile' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:505:in `call' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:505:in `call' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:92:in `__run_callbacks__' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:778:in `_run_save_callbacks' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/callbacks.rb:302:in `create_or_update' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/persistence.rb:142:in `save!' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/validations.rb:43:in `save!' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/attribute_methods/dirty.rb:29:in `save!' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/transactions.rb:291:in `block in save!' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/transactions.rb:351:in `block in with_transaction_returning_status' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `block in transaction' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/connection_adapters/abstract/transaction.rb:184:in `within_new_transaction' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `transaction' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/transactions.rb:220:in `transaction' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/transactions.rb:348:in `with_transaction_returning_status' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/transactions.rb:291:in `save!' /Users/jonathan/Projects/DoneThis/app/services/create_plan_service.rb:8:in `call' /Users/jonathan/Projects/DoneThis/db/seeds.rb:10:in `' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:268:in `load' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:268:in `block in load' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:240:in `load_dependency' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:268:in `load' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/railties-4.2.5/lib/rails/engine.rb:547:in `load_seed' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/tasks/database_tasks.rb:250:in `load_seed' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/railties/databases.rake:183:in `block (2 levels) in ' /Users/jonathan/.rvm/gems/ruby-2.2.3@DoneThis/gems/activerecord-4.2.5/lib/active_record/railties/databases.rake:142:in `block (2 levels) in ' Tasks: TOP => db:setup => db:seed (See full trace by running task with --trace) Posted 25th December 2015 by Upgrade to a Google+ profile 0 ADD A COMMENT 4. May 11 THANK YOU TESLA... I became an inadvertent Tesla Roadster owner when an investment I made went South and the company was left holding the lease. You may have seen it--it was sublet to be used in the film Looper... with a bit of body kit applied: I'm a Tesla fanboy for many reasons--an adolescent obsession with electric cars, the beauty of changing an industry by beating it in every possible dimension and the exhilaration of constant, gearless acceleration. Then there's Elon's ability to build a $1bn business in the midst of a regulated environment where the aristocratic incumbents are subsidized through longstanding government and business relationships. But if you were an early Tesla owner, you'd have seen something else--the employees at Tesla didn't act like employees. They acted like a meetup of electric car enthusiasts--sharing their time, thoughts and resources to make sure you had a phenomenal experience with the vehicle. In 2010 Tesla was a few hundred employees servicing 2,500 vehicles--and when you spoke to Johnny about a question on your car, you'd also talk to Johnny when Tesla detected a low tire pressure on your vehicle--and to Johnny again when you heard your software was updated along with a tire replacement (you *ahem* get a lot of tire wear on your Tesla). Fast-forward to today, Tesla has 10,000 employees and cranks out 2,000 new cars a month. Alongside this growth, the culture is changing--instead of a low-key showroom next to a garage bay or a nondescript Palo Alto industrial building, the company has matured a vehicle brand. They have real offices, real showrooms, real receptionists. They have a style guide and brand consistency (even Tesla Red™). So I wasn't entirely surprised when my latest vehicle issue (a Roadster with a well-used battery) exposed the first hiccup I've experienced. Instead of a "we already have three solutions for you, let us know how we can best serve you!", I got a "here's your problem, it's pretty shitty, and good luck with it." It's times like these that expose the character of a company--and its leadership--where personality ultimately flows from. Maybe "good luck with it" wasn't exactly what was said, but instead of accepting a mediocre response, I asked to speak with the original team that had helped me... the team that had been so helpful in the past. What happened next was unexpected and delightful. Rather than continuing to pursue a Tesla position--in this case, that I had caused a rapid decline of the vehicle battery--and would have a really expensive paperweight until the new battery came out--Tesla went over and beyond and offered to work with me on getting the car back on the road now--with them bearing the brunt of the burden. It took three phone calls and in the end six Tesla teammates to make it happen... but a few days later I had my Tesla back and can continue to be a shameless Tesla fanboy. Thank you's to the Tesla team that had to deal with (me and...) my issue! Thomas Canchola, Shaun Matthies, Johnny Chan, Anthony Wells, and Jerome Guillen. Stellar work. Thank you! Posted 11th May 2015 by Upgrade to a Google+ profile 0 ADD A COMMENT 5. 6. May 7 READY PLAYER ONE... WHY WASN'T FYNDORO'S TABLET USED? OK. Willful suspension of disbelief is great. Enjoyed Ready Player One for many great recalled memories of childhood. If you were alive in the 80's you'll likely get the same joy. That said--to those that have read it--why wasn't Fyndoro's Tablet of Finding used to track down Parzival (and the others) and eliminate them prior to the final showdown? There's multiple references to the 6'ers wanting to find them, but they have an artifact that allows them to do just that. Besides that--good twisty read for a third of the book. Probably a dead-hit for my 13yr old self, but then again--nobody that age was around in the 80's. :-P Posted 7th May 2015 by Upgrade to a Google+ profile 1 VIEW COMMENTS 7. Nov 7 RIGHTSIGNATURE NOW MORE POPULAR THAN RIGHTSCALE I cofounded RightSignature with Daryl Bernstein and Cary Dunn a year after starting RightScale (nee AWS-Console) with Thorsten Von Eicken. Since then, RightScale has been a juggernaut raising over $40m, creating a legion of T-Shirts and generally helping to promote an early cloud-centric world. So you can imagine my surprise when I saw Alexa showing RightSignature skyrocketing into popularity--well ahead of RightScale. Both businesses took advantage of a greater rising tide. In RightScale's case, it was the reduction in friction that instant provisioning via an infrastructure API brought. Over time, technologists will find greater value by automating their infrastructure in the same way that companies automate tasks using software that were once relegated to manual calculations. And for RightSignature, the rising tide is the increased efficiency of capturing intent when paper is removed. This means contracts are signed faster, sales made quicker and formerly manual processes become automated. In ten years from now, nobody will look back fondly wishing, "if only I could send this contract by a postal service and have my customer get it in three or maybe two days--and then I can hope that they sign and return it... yes maybe in a week or so that deal will be done!" Cloud computing is mainstream. But mainstream in a microcosm--the techie world. Online Signatures are mainstream too (seen the billboards on 101 from SFO into the city?)--but they are mainstream in the business world. This is a much larger market and may make RightSignature a much larger business than RightScale. Certainly Alexa thinks so: vs Posted 7th November 2013 by Upgrade to a Google+ profile 0 ADD A COMMENT 8. Apr 7 FUTURE WORLD SQUASH PLAYER VS THE WORLD #1 SQUASH PLAYER :-) Liam Siegel vs David Palmer Posted 7th April 2013 by Upgrade to a Google+ profile 0 ADD A COMMENT 9. 10. Jan 5 HEROKU PLEASE ENABLE **AT LEAST BASIC** DENIAL OF SERVICE PREVENTION I've been an unabashed fanboy of Heroku, but recently I've been running into serious blockers trying to maintain production code on the platform. This time it was lack of basic network IP blocking for an offending address. If this sounds like a non-concern for you and your applications, stay with Heroku! If this is disconcerting and worrisome for your production apps, read on... One application is a Golang app that has been tested on AWS micro instances capable of handling thousands of transactions per second. All logic is based on in-memory data and the app is really well optimized. On Heroku, we've been able to handle just over a thousand requests per second with one dyno. However--recently we started seeing downtime reported by our external monitoring. We added internal debugging instrumentation to the app (since Heroku lacks platform inspection) and found a malicious or at least negligent user hitting our app continuously 430 times per second. This on top of our normal load was causing Heroku's request-router to stop routing requests to our app. We contacted Heroku support and over a 24 hour period were advised that we should add more dynos in order to better handle traffic. Now--this irks us for a number of reasons. Firstly--the same code handles almost an order-of-magnitude more traffic when run direct on an AWS micro instance compared to Heroku. We have no visibility into the activity in Heroku's routing layer vs the requests that make it to our app--is it them or us? And in the end we are basically grasping at straws--their official suggestion is to start turning dials on a black box to try and "guess" a solution rather than understand the real root cause. In our case, even when we don't know the exact reason Heroku is dropping requests, we know that basic network hygiene says--block the IP address that is effecting a DoS. On real hardware on our own network, within AWS, or even within Google AppEngine it is TRIVIAL to prevent access on an IP by IP basis. We assumed that even though Heroku might not expose this functionality, that they did in fact have the ability to block IPs. But their support response to a request to block an IP is: > "Heroku does not offer any kind of direct DDoS mitigation unfortunately. > You could try increasing your dynos until the DDoS attack is over to > prevent your API from being saturated. I will forward this on to our > Security team for more suggestions here." Heroku has been excellent for our side projects. Their team has excellent developers and a great ethos for easing the development process. But building an automated hosting platform is a different task than building an "Enterprise Grade" environment. As we find more holes in the platform we're finding it harder to commit to Heroku as the right choice for us given the lack of platform maturity. We hope that Heroku's team finds the bandwidth to address this issue! Posted 5th January 2013 by Upgrade to a Google+ profile Labels: heroku 6 VIEW COMMENTS 11. Oct 30 BEST PIANOMAN EVAR Posted 30th October 2012 by Upgrade to a Google+ profile 0 ADD A COMMENT 12. Oct 28 DYLAN STILL ROCKING AT ? Posted 28th October 2012 by Upgrade to a Google+ profile 0 ADD A COMMENT 13. 14. Oct 28 DINNER IZAKAYA STYLE... THANKS TO ICHIZA ☺ Posted 28th October 2012 by Upgrade to a Google+ profile 0 ADD A COMMENT About Me About Me Upgrade to a Google+ profile Blog Archive Blog Archive * 20161 * January1 * RailsApps Composer Heroku deploy issue * 20153 * December1 * May2 * 20133 * November1 * April1 * January1 * 201211 * October3 * September3 * August1 * May1 * March1 * February2 * 201117 * December3 * November2 * October2 * September2 * August2 * July1 * May3 * March2 * 201032 * December2 * November2 * October5 * September3 * August2 * July1 * June1 * May1 * April8 * March1 * February1 * January5 * 20097 * October1 * August2 * July1 * June2 * January1 * 200826 * December4 * October5 * September6 * August3 * June4 * May4 * 200633 * October1 * September4 * August8 * July1 * May1 * April2 * March10 * February2 * January4 * 20051 * December1 My Totally Biased Links My Totally Biased Links * Stop emailing, printing and faxing documents. Sign with eSignatures instead.. * RightSprite iPhone Development * Don't SEO without Usability Testing * Put your music on iTunes with TuneCore * RightScale EC2 Management * RightCart * Baby Shower Gifts * Ruby on Rails Development Tags Tags * Ireland18 * Speaking13 * Business12 * programming10 * heroku9 * SysAdmin8 * Ruby7 * Rails6 * Travel6 * appengine6 * Ubuntu5 * domain registrars5 * iedr5 * Kids4 * howto4 * poor customer service4 * Cloud3 * EC23 * ELC3 * MacBook3 * OS X3 * AWS2 * Asia2 * Boys2 * Clojure2 * Dad2 * Europe2 * Google Apps2 * RightScale2 * RightSignature2 * Robots2 * Writing2 * cooking2 * gdata2 * indian2 * Apple1 * Applications1 * Beijing1 * China1 * DNS1 * DRAC1 * Dell1 * Ecomony1 * Fixed1 * FunConf1 * Funding1 * Gem1 * Hadoop1 * Launch1 * Riak1 * Sqlite1 * Trac1 * Unfuddle1 * Venturenet1 * Vertu1 * Weather1 * XMPP1 * iPad1 * iTouch1 * knol1 * python1 Loading