Skeleton for Appium-Cucumber tests

After several projects using Cucumber and Appium/Calabash I end up with kind of golden standard for the skeleton of tests. Nothing really special, but still it allows you to stop thinking about boilerplate and jump right into writing actual tests. The tree looks like this:

.
|__apk\
|__features\
| |__step_definitions\
| |__support\
| | |__app.rb
| | |__env.rb
|__Gemfile
|__Gemfile.lock
|__lib\
| |__page_object.rb
| |__page_objects\

And the content of these files is as follows:

# features/support/env.rb
Bundler.require :default

require_relative 'app'
require_relative '../../lib/page_object'

CAPABILITIES = { caps: { deviceName: 'Nexus',
                         platformName: 'android',
                         app: File.join(Dir.pwd, 'apk', 'AnApp.apk'),
                         newCommandTimeout: 300
                       },
                 appium_lib: { wait: 1 } }

Appium::Driver.new(CAPABILITIES)

Appium.promote_appium_methods([App, PageObject])

World(App)
# features/support/app.rb
module App
  def on(page_object_class)
    if block_given?
      yield page_object_class.new
    else
      page_object_class.new
    end
  end
end
# lib/page_object.rb
module PageObject
end

Pathname('lib/page_objects').each_child { |file| require file.expand_path }