Phil Goodwin's blog
Helps
"How do I avoid timing problems while doing integration tests on single page apps?"
- Use a
wait_untilblock with a selector which has not been cached. - Use a
wait_untilblock with a piece of javascript usingevaluate_scriptwhich you expect to return when your page is finished loading. - Use a
wait_untilblock which waits for all AJAX to stop using$.ajaxStop().
Interesting
Time.parse(invalid)will throw an exception, butTime.zone.parse(invalid)will returnnil. BecauseTime.parseis part of the Ruby library whileTime.zoneis part of Rails.parallel_testsreally does speed up your tests. It munges all the output together into an ugly mess though.
Interesting
- Date.today is not aware of the local timezone, but Date.yesterday is. Use Date.current or Time.zone.now instead.
- Hackathon May 12-13 for mobile game development. More info
Helps
"How do I not use VCR with Webmock in a spec?"
Use VCR.eject_cassette, see: docs
"Facebook now expires all tokens after 60 days. If you schedule a task with Facebook in the future it may use the expired token. Any solutions?"
Sadly there is nothing you can do. Send the user an email to re-auth.
"Good way to get replies on Twitter?"
Nope. Crawl thorough all your mentions, to get to your replies.
Helps
"How do I prevent Facebook from kicking out my "demo" user when all the devs are logging into that account multiple times a day?"
Some people have had luck with creating that kind of account dynamically on a per use basis.
"How do you make sure unicorn restarts when running under runit?"
A project is running Unicorn under runit, and finding it doesn't always restart when it's told to. It seems Unicorn just isn't responding to the signal. No one had seen anything similar.
"Can heroku_san automate the managing of my addons?"
Update to the newest version! See the github pull request
Helps
*Why is Cruise Control green when my tests are failing?
Probably because the rake task running the tests returns zero. Cruise Control relies on the exit code of the processes it runs to determine whether to report success or failure. This seems like a common Cruise Control pitfall. It's good practice to run a failing test through Cruise Control during initial set up in order to avoid this problem
Helps
*Is there a way to change the URL that CCRB pulls from when it builds?
"Use Jenkins" (we will be standardizing on Jenkins in the near future anyway)
Apparently the answer has been found successfully in the past by grepping through the Ruby portion of the CCRB source.
Interesting
Hack For Change, sponsored by Change.org is inviting engineers and designers to spend 24 hours to build a web or mobile app that can help advance positive change. Top-rated hacks will be awarded a total of $10,000 to ensure their continued success and will gain recognition through widespread media coverage and promotion. http://hackforchange.com
Guiderails: Pivotal's Rails 3 Templates, has been made publicly available on GitHub. https://github.com/pivotal/guiderails
While there is not consensus on how hash tags in URLs that are being redirected should be handled, Safari stands apart from most other modern browsers by throwing them away entirely.
When configuring a new project for Jenkins, remember to specify the branch to build, otherwise Jenkins will try to pull and build all branches from the repo.
Jasmine has a bug in its "runs and waits for" construct that causes it to ignore changes to the defaults for the timer and message on the "waits for" block.
Helps
*Is there a way to log in and download log files from Cloudfront, preferably programmatically? They can be obtained from the management console but access is needed from the command line.
Interesting
In Ruby 1.9.2 the delayed_job facility uses the Psych parser to serialize and Syck to deserialize the delayed job, with unpleasant results. One way to solve the problem is to go into the Ruby installation and "if false" away the Psych source code, it's an admittedly terrible approach, but it has the appeal of actually working.
Ruby Mine does not behave well with CanCan out of the box. The problems can be fixed by editing the CanCan Ruby file and commenting out the line that sets rspec equal to spec unless rspec is already defined.
Helps
Is there a way to get MySql indexing to speed up queries involving greater and less than operators on date columns?
Postgres handles these operators a little bit better than MySql, but may not actually solve this problem.
Using millis instead of dates would give the DB the best chance of handling this scenario.
We are using Git's subtree merge facility instead of submodules to stay synced to a different repository for part of our project. How do we push changes back to that repo?
See Tim Connor's blog post "Git sub-tree merging back to the subtree for pushing to an upstream". Early in that post is a pointer to an article describing the the subtree merge operation. Tim goes on to explain how to push your changes back through the chain.
Interesting
Some cloud environments leave the names of temp files visible even when their contents are not accessible. Be sure to use obfuscated names for your temporary files!
The "Headless" gem allows you to easily set up an alternate "display" that allows programs to execute in a headless environment. See this blog post about how to use Headless to run Selenium tests on a CI box: http://www.aentos.com/blog/easy-setup-your-cucumber-scenarios-using-headless-gem-run-selenium-your-ci-server
Ccrb will bog down to painfully slow levels if more than a couple of CC Tray clients are pinging it repeatedly during a build.
Cron will not honor your .rvmrc file unless you do some work to set up the environment. If you set up your cron job like this:
0 6 * * * /bin/bash -l -c 'echo /home/someuser/.rvm/bin/rvm rvmrc trust ... && cd ...
the -l & -c parameters cause bash to load your environment as if your were logging in before running the specified commands. Someone also mentioned that rvm-shell can be used as a solution to this problem.
Interesting
- Problem: Select includes "*" by default, so selecting by specific column names does not work
If you write:
class Thing < ActiveRecord::Base
has_many :posts
end
class Post < ActiveRecord::Base
default_scope select(column_names - ['body'])
end
Thing.includes(:posts).all does the following for the posts query:
SELECT id, fk_column_id, column1, etc, posts.*
FROM posts
WHERE (pages.fk_column>in IN(1,2,3))
It takes the default select scope, but also appends posts.* to the end of it.
This is caused by the :select find_option in the find_associated_records inside of association_preload.rb. This is what it is now:
:select => preload_options[:select]
|| options[:select]
|| Arel::SqlLiteral.new("#{table_name}.*")
It seems like the third || case is not needed, since that is the default for any select and it causes the above behavior.
Joseph Palermo has filed a ticket with Lighthouse about this...
Helps
"How can I test route redirects in Rails 3?"
Capybara (a Webrat clone for Rails 3) will do the job but we're looking for something a little more direct. It may be possible to test this by checking location headers and disabling automatic redirects in tools might increase visibility.
