I've been trying to understand how to setup systems from
the ground up on Ubuntu. I just installed redis onto
the box and here's how I did it and some things to look
out for.
To install:
| var API_KEY = "XXX"; | |
| var SECRET_KEY = "XXX"; | |
| var crypto = require('crypto'); | |
| var url2png = function() { | |
| this.generateLink = function(url) { | |
| var options = "?url="+url + "&viewport=1480x1037&thumbnail_max_width=500"; | |
| var token = crypto.createHash('md5').update(options + SECRET_KEY).digest('hex'); | |
| return "http://api.url2png.com/v6/"+API_KEY+"/"+token+"/png/"+options; |
| # Runs a specified shell command in a separate thread. | |
| # If it exceeds the given timeout in seconds, kills it. | |
| # Returns any output produced by the command (stdout or stderr) as a String. | |
| # Uses Kernel.select to wait up to the tick length (in seconds) between | |
| # checks on the command's status | |
| # | |
| # If you've got a cleaner way of doing this, I'd be interested to see it. | |
| # If you think you can do it with Ruby's Timeout module, think again. | |
| def run_with_timeout(command, timeout, tick) | |
| output = '' |
| def generate_secure_s3_url(s3_key) | |
| # | |
| # s3_key would be a path (including filename) to the file like: "folder/subfolder/filename.jpg" | |
| # but it should NOT contain the bucket name or a leading forward-slash | |
| # | |
| # this was built using these instructions: | |
| # http://docs.amazonwebservices.com/AmazonS3/latest/dev/index.html?S3_QSAuth.html | |
| # http://aws.amazon.com/code/199?_encoding=UTF8&jiveRedirect=1 | |
| s3_base_url = MyApp::Application::S3_BASE_URL # i.e. https://mybucket.s3.amazonaws.com |
| # A sample Gemfile | |
| source "http://rubygems.org" | |
| gem "redis" | |
| gem 'eventmachine', :git => 'git://github.com/eventmachine/eventmachine.git' | |
| gem "em-hiredis" | |
| # gem "em-synchrony" | |
| gem "em-websocket" |
| source :rubygems | |
| gem 'sinatra' | |
| gem 'json' | |
| gem 'omniauth' | |
| gem 'omniauth-oauth2' | |
| gem 'omniauth-github' | |
| # gem 'omniauth-att', :path => File.expand_path("./../../omniauth-att", __FILE__) | |
| gem 'thin' |
| # normal Gem dependancy declarations | |
| # ... | |
| group :test, :cucumber do | |
| gem 'pdf-reader' | |
| end |
| =Navigating= | |
| visit('/projects') | |
| visit(post_comments_path(post)) | |
| =Clicking links and buttons= | |
| click_link('id-of-link') | |
| click_link('Link Text') | |
| click_button('Save') | |
| click('Link Text') # Click either a link or a button | |
| click('Button Value') |
| #!/usr/bin/env ruby | |
| require 'em-proxy' | |
| Proxy.start(:host => "0.0.0.0", :port => 9201, :debug => false) do |conn| | |
| conn.server :srv, :host => "127.0.0.1", :port => 9200 | |
| conn.on_data do |data| | |
| puts data | |
| data |
| # Have you ever had to sleep() in Capybara-WebKit to wait for AJAX and/or CSS animations? | |
| describe 'Modal' do | |
| should 'display login errors' do | |
| visit root_path | |
| click_link 'My HomeMarks' | |
| within '#login_area' do | |
| fill_in 'email', with: '[email protected]' | |
| fill_in 'password', with: 'test' |