Giter Site home page Giter Site logo

fastlane / boarding Goto Github PK

View Code? Open in Web Editor NEW
874.0 874.0 193.0 3.54 MB

Instantly create a simple signup page for TestFlight beta testers

Home Page: https://fastlane.tools

License: MIT License

Ruby 75.87% JavaScript 1.55% CoffeeScript 0.51% HTML 19.83% SCSS 2.25%

boarding's Introduction

Twitter: @FastlaneTools License Gem Homebrew Build Status PRs welcome!

fastlane is a tool for iOS and Android developers to automate tedious tasks like generating screenshots, dealing with provisioning profiles, and releasing your application.


✨ All fastlane docs were moved to docs.fastlane.tools


Need Help?

Before submitting a new GitHub issue, please make sure to

If the above doesn't help, please submit an issue on GitHub and provide information about your setup, in particular the output of the fastlane env command.

Note: If you want to report a regression in fastlane (something that has worked before, but broke with a new release), please mark your issue title as such using [Regression] Your title here. This enables us to quickly detect and fix regressions.

fastlane team

Łukasz Grabowski

Jimmy Dee

Special thanks to all contributors for extending and improving fastlane.

Contribute to fastlane

Check out CONTRIBUTING.md for more information on how to help with fastlane.

Code of Conduct

Help us keep fastlane open and inclusive. Please read and follow our Code of Conduct.

Metrics

fastlane tracks a few key metrics to understand how developers are using the tool and to help us know what areas need improvement. No personal/sensitive information is ever collected. Metrics that are collected include:

  • The number of fastlane runs
  • A salted hash of the app identifier or package name, which helps us anonymously identify unique usage of fastlane

You can easily opt-out of metrics collection by adding opt_out_usage at the top of your Fastfile or by setting the environment variable FASTLANE_OPT_OUT_USAGE. Check out the metrics code on GitHub

License

This project is licensed under the terms of the MIT license. See the LICENSE file.

This project and all fastlane tools are in no way affiliated with Apple Inc. This project is open source under the MIT license, which means you have full access to the source code and can modify it to fit your own needs. All fastlane tools run on your own computer or server, so your credentials or other sensitive information will never leave your own computer. You are responsible for how you use fastlane tools.


✨ All fastlane docs were moved to docs.fastlane.tools


boarding's People

Contributors

0xced avatar abookyun avatar alexekoren avatar apeckham avatar aral avatar armcburney avatar bqmackay avatar briannewsom avatar bvirlet avatar coderbec avatar d-32 avatar d-date avatar dkhamsing avatar dlackty avatar dougsuriano avatar dusek avatar emcniece avatar endocrimes avatar jetersen avatar koenpunt avatar kovpas avatar krausefx avatar mbogh avatar mfurtak avatar ohayon avatar quelleck avatar ruddfawcett avatar suculent avatar taquitos avatar zewaren avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

boarding's Issues

Unable to complete deployment on Heroku

Believe the new iTunes Connect changes have rendered the deployment process for Boarding broken.
Deployed last night before the changes and worked. Site no longer worked - I assumed this was because Spaceship etc needed updating. Deleted the Heroku app to try again. Deployed at 11:15AM with fresh Heroku App, but received following error message.

screen shot 2015-11-12 at 11 10 25

fatal error on user signup

I followed the instructions in the README, but I'm getting an error whenever I try to submit a new tester. Here are the logs from Heroku

2015-12-08T01:02:45.312906+00:00 app[web.1]: I, [2015-12-08T01:02:44.337911 #3]  INFO -- : Going to create a new tester: [email protected] - Andrew Breckenridge
2015-12-08T01:02:45.312908+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/spaceship-0.15.1/lib/spaceship/tunes/tunes_client.rb:718:in `testers'
2015-12-08T01:02:45.312908+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/spaceship-0.15.1/lib/spaceship/tunes/tester.rb:74:in `all'
2015-12-08T01:02:45.312906+00:00 app[web.1]: F, [2015-12-08T01:02:45.312653 #3] FATAL -- : #<Spaceship::Client::UnexpectedResponse: {"data"=>nil, "messages"=>{"warn"=>nil, "error"=>["Forbidden"], "info"=>nil}, "statusCode"=>"ERROR"}>
2015-12-08T01:02:45.312910+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_controller/metal/implicit_render.rb:4:in `send_action'
2015-12-08T01:02:45.312909+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/spaceship-0.15.1/lib/spaceship/tunes/tester.rb:81:in `find'
2015-12-08T01:02:45.312909+00:00 app[web.1]: /app/app/controllers/invite_controller.rb:58:in `submit'
2015-12-08T01:02:45.312910+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/abstract_controller/base.rb:198:in `process_action'
2015-12-08T01:02:45.312911+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_controller/metal/rendering.rb:10:in `process_action'
2015-12-08T01:02:45.312911+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/abstract_controller/callbacks.rb:20:in `block in process_action'
2015-12-08T01:02:45.312911+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:117:in `call'
2015-12-08T01:02:45.312912+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:117:in `call'
2015-12-08T01:02:45.312912+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:555:in `block (2 levels) in compile'
2015-12-08T01:02:45.312913+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:505:in `call'
2015-12-08T01:02:45.312913+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:505:in `call'
2015-12-08T01:02:45.312913+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:92:in `_run_callbacks'
2015-12-08T01:02:45.312914+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:776:in `_run_process_action_callbacks'
2015-12-08T01:02:45.312924+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:81:in `run_callbacks'
2015-12-08T01:02:45.312925+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/abstract_controller/callbacks.rb:19:in `process_action'
2015-12-08T01:02:45.312928+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_controller/metal/rescue.rb:29:in `process_action'
2015-12-08T01:02:45.312929+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_controller/metal/instrumentation.rb:32:in `block in process_action'
2015-12-08T01:02:45.312929+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
2015-12-08T01:02:45.312929+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/notifications.rb:164:in `block in instrument'
2015-12-08T01:02:45.312930+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/notifications.rb:164:in `instrument'
2015-12-08T01:02:45.312930+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_controller/metal/instrumentation.rb:30:in `process_action'
2015-12-08T01:02:45.312931+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_controller/metal/params_wrapper.rb:250:in `process_action'
2015-12-08T01:02:45.312931+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/abstract_controller/base.rb:137:in `process'
2015-12-08T01:02:45.312931+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionview-4.2.1/lib/action_view/rendering.rb:30:in `process'
2015-12-08T01:02:45.312932+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_controller/metal.rb:196:in `dispatch'
2015-12-08T01:02:45.312932+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
2015-12-08T01:02:45.312932+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_controller/metal.rb:237:in `block in action'
2015-12-08T01:02:45.312933+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/routing/route_set.rb:74:in `call'
2015-12-08T01:02:45.312933+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/routing/route_set.rb:74:in `dispatch'
2015-12-08T01:02:45.312933+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/routing/route_set.rb:43:in `serve'
2015-12-08T01:02:45.312934+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/journey/router.rb:30:in `each'
2015-12-08T01:02:45.312935+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/journey/router.rb:30:in `serve'
2015-12-08T01:02:45.312934+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/journey/router.rb:43:in `block in serve'
2015-12-08T01:02:45.312935+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/routing/route_set.rb:819:in `call'
2015-12-08T01:02:45.312935+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/http_accept_language-2.0.5/lib/http_accept_language/middleware.rb:14:in `call'
2015-12-08T01:02:45.312936+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/rack-1.6.4/lib/rack/etag.rb:24:in `call'
2015-12-08T01:02:45.312936+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/rack-1.6.4/lib/rack/conditionalget.rb:38:in `call'
2015-12-08T01:02:45.312937+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/rack-1.6.4/lib/rack/head.rb:13:in `call'
2015-12-08T01:02:45.312937+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/middleware/params_parser.rb:27:in `call'
2015-12-08T01:02:45.312938+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/middleware/flash.rb:260:in `call'
2015-12-08T01:02:45.312938+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/rack-1.6.4/lib/rack/session/abstract/id.rb:225:in `context'
2015-12-08T01:02:45.312939+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/rack-1.6.4/lib/rack/session/abstract/id.rb:220:in `call'
2015-12-08T01:02:45.312939+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/middleware/cookies.rb:560:in `call'
2015-12-08T01:02:45.312939+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
2015-12-08T01:02:45.312940+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:88:in `call'
2015-12-08T01:02:45.312941+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:88:in `_run_callbacks'
2015-12-08T01:02:45.312941+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:776:in `_run_call_callbacks'
2015-12-08T01:02:45.312941+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:81:in `run_callbacks'
2015-12-08T01:02:45.312942+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/middleware/callbacks.rb:27:in `call'
2015-12-08T01:02:45.312942+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/middleware/remote_ip.rb:78:in `call'
2015-12-08T01:02:45.312942+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
2015-12-08T01:02:45.312943+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
2015-12-08T01:02:45.312943+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.1/lib/rails/rack/logger.rb:38:in `call_app'
2015-12-08T01:02:45.312955+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/rack-1.6.4/lib/rack/runtime.rb:18:in `call'
2015-12-08T01:02:45.312954+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.1/lib/rails/rack/logger.rb:22:in `call'
2015-12-08T01:02:45.312955+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/rack-1.6.4/lib/rack/methodoverride.rb:22:in `call'
2015-12-08T01:02:45.312954+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/middleware/request_id.rb:21:in `call'
2015-12-08T01:02:45.312955+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
2015-12-08T01:02:45.312971+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.1/lib/rails/engine.rb:518:in `call'
2015-12-08T01:02:45.312971+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.1/lib/rails/application.rb:164:in `call'
2015-12-08T01:02:45.312956+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/middleware/static.rb:113:in `call'
2015-12-08T01:02:45.312956+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/rack-1.6.4/lib/rack/sendfile.rb:113:in `call'
2015-12-08T01:02:45.312973+00:00 app[web.1]: /app/vendor/ruby-2.2.3/lib/ruby/2.2.0/webrick/httpserver.rb:138:in `service'
2015-12-08T01:02:45.312972+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/rack-1.6.4/lib/rack/lock.rb:17:in `call'
2015-12-08T01:02:45.312972+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/rack-1.6.4/lib/rack/content_length.rb:15:in `call'
2015-12-08T01:02:45.312974+00:00 app[web.1]: /app/vendor/ruby-2.2.3/lib/ruby/2.2.0/webrick/server.rb:294:in `block in start_thread'
2015-12-08T01:02:45.312972+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/rack-1.6.4/lib/rack/handler/webrick.rb:88:in `service'
2015-12-08T01:02:45.312973+00:00 app[web.1]: /app/vendor/ruby-2.2.3/lib/ruby/2.2.0/webrick/httpserver.rb:94:in `run'

How to?

How to submit build to Apple App Store as pre-release from xcode project. I am trying to automate Unity3d to IOS app submission. Unity3d does export to xcode project using command line. Can deliver take input as xcode project path instead of ipa?

Boarding Example Not Working

I'm afraid I can't be much more helpful right now, but it seems there's a crash with the example hosted at https://boarding.herokuapp.com

I'll see if I can dig out any further information for you shortly just in case it's not a trivial thing to fix - I haven't yet created an example for myself.

Rails development mode configuration

Hello,

I am trying to style the page in rails development mode but I cannot run the server locally due to many errors. I figure it has to do with storing ITC variables but I'm not sure where to put them and how. I imagine in Rails 4, it would be in the 'secrets.yml' under development or production... Can someone please give me more explicit instructions. I am new to Fastlane/boarding and but I have all the variables from the Heroku config. Thank you!

Restrict access to certain email domains

I was wondering if anyone had interest in an feature that restricted signups to a certain domain name? AKA only allow external users from your school or organization to sign up. I'm thinking RESTRICTED_DOMAIN=school.edu? If the value is null/the variable is nonexistent it would default to normal behavior.

I have implemented this feature and am just trying to get a sense of if anyone else would benefit from it.

In the meantime, you can drop something like this into your app/controllers/invite_controller.rb, at around line 22.

if email.split("@").last != "school.edu"
  @message = "Sorry! Early access is currently restricted to people within the @school.edu domain.  We will be opening it up soon, though!"
  @type = "warning"
  render :index
  return
end

"Can't verify CSRF token authenticity" when some people sign up

I haven't been able to reproduce this myself, but I have gotten sporadic reports from users that they get an error saying "The change you wanted was rejected" and maybe this will help other people chip in information.

Is there any advice I can give the users? If not, can we add a flag to disable CSRF checking?

In the logs I see things like this:

2016-02-03T01:15:17.164759041Z app[web.1]: Started POST "/submit" for xx.xx.xx.xx at 2016-02-03 01:15:17 +0000
2016-02-03T01:15:17.166967316Z app[web.1]: Processing by InviteController#submit as HTML
2016-02-03T01:15:17.167643721Z app[web.1]:   Parameters: {"utf8"=>"✓", "authenticity_token"=>"N2gcarBfi6AxPgg9/Mu+C8rcBzcXj6f1IEEb0NnxwPTl11wwxlByJWx0wkbAcTMuksjTJiXodKT+uV2wUNct5A==", "first_name"=>"xxx", "last_name"=>"xxx", "email"=>"[email protected]", "commit"=>"Get Beta Access"}
2016-02-03T01:15:17.168728354Z app[web.1]: Can't verify CSRF token authenticity
2016-02-03T01:15:17.169390154Z app[web.1]: Completed 422 Unprocessable Entity in 2ms
2016-02-03T01:15:17.171051447Z app[web.1]:
2016-02-03T01:15:17.171080946Z app[web.1]: ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken):
2016-02-03T01:15:17.171097008Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_controller/metal/request_forgery_protection.rb:181:in `handle_unverified_request'
2016-02-03T01:15:17.171104785Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_controller/metal/request_forgery_protection.rb:209:in `handle_unverified_request'
2016-02-03T01:15:17.171111834Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_controller/metal/request_forgery_protection.rb:204:in `verify_authenticity_token'
2016-02-03T01:15:17.171119896Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:432:in `block in make_lambda'
2016-02-03T01:15:17.171129266Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:164:in `call'
2016-02-03T01:15:17.171136116Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:164:in `block in halting'
2016-02-03T01:15:17.171142912Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:504:in `call'
2016-02-03T01:15:17.171157219Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:504:in `block in call'
2016-02-03T01:15:17.171192082Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:504:in `each'
2016-02-03T01:15:17.171206760Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:504:in `call'
2016-02-03T01:15:17.171213518Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:92:in `_run_callbacks'
2016-02-03T01:15:17.171219608Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:776:in `_run_process_action_callbacks'
2016-02-03T01:15:17.171225892Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:81:in `run_callbacks'
2016-02-03T01:15:17.171231777Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/abstract_controller/callbacks.rb:19:in `process_action'
2016-02-03T01:15:17.171237654Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_controller/metal/rescue.rb:29:in `process_action'
2016-02-03T01:15:17.171243346Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_controller/metal/instrumentation.rb:32:in `block in process_action'
2016-02-03T01:15:17.171249082Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/notifications.rb:164:in `block in instrument'
2016-02-03T01:15:17.171254863Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
2016-02-03T01:15:17.171260653Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/notifications.rb:164:in `instrument'
2016-02-03T01:15:17.171266367Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_controller/metal/instrumentation.rb:30:in `process_action'
2016-02-03T01:15:17.171272128Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_controller/metal/params_wrapper.rb:250:in `process_action'
2016-02-03T01:15:17.171277801Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/abstract_controller/base.rb:137:in `process'
2016-02-03T01:15:17.171283706Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionview-4.2.1/lib/action_view/rendering.rb:30:in `process'
2016-02-03T01:15:17.171289401Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_controller/metal.rb:196:in `dispatch'
2016-02-03T01:15:17.171295074Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
2016-02-03T01:15:17.171300765Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_controller/metal.rb:237:in `block in action'
2016-02-03T01:15:17.171306470Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/routing/route_set.rb:74:in `call'
2016-02-03T01:15:17.171312279Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/routing/route_set.rb:74:in `dispatch'
2016-02-03T01:15:17.171317949Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/routing/route_set.rb:43:in `serve'
2016-02-03T01:15:17.171324105Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/journey/router.rb:43:in `block in serve'
2016-02-03T01:15:17.171329871Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/journey/router.rb:30:in `each'
2016-02-03T01:15:17.171342817Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/journey/router.rb:30:in `serve'
2016-02-03T01:15:17.171349237Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/routing/route_set.rb:819:in `call'
2016-02-03T01:15:17.171354952Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/http_accept_language-2.0.5/lib/http_accept_language/middleware.rb:14:in `call'
2016-02-03T01:15:17.171360733Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/rack-1.6.4/lib/rack/etag.rb:24:in `call'
2016-02-03T01:15:17.171397663Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/rack-1.6.4/lib/rack/conditionalget.rb:38:in `call'
2016-02-03T01:15:17.171404474Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/rack-1.6.4/lib/rack/head.rb:13:in `call'
2016-02-03T01:15:17.171411546Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/middleware/params_parser.rb:27:in `call'
2016-02-03T01:15:17.171417775Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/middleware/flash.rb:260:in `call'
2016-02-03T01:15:17.171424002Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/rack-1.6.4/lib/rack/session/abstract/id.rb:225:in `context'
2016-02-03T01:15:17.171429822Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/rack-1.6.4/lib/rack/session/abstract/id.rb:220:in `call'
2016-02-03T01:15:17.171435642Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/middleware/cookies.rb:560:in `call'
2016-02-03T01:15:17.171441381Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
2016-02-03T01:15:17.171447393Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:88:in `call'
2016-02-03T01:15:17.173015350Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:88:in `_run_callbacks'
2016-02-03T01:15:17.173070828Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:776:in `_run_call_callbacks'
2016-02-03T01:15:17.173179818Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:81:in `run_callbacks'
2016-02-03T01:15:17.173206122Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/middleware/callbacks.rb:27:in `call'
2016-02-03T01:15:17.173333575Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/middleware/remote_ip.rb:78:in `call'
2016-02-03T01:15:17.173363369Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
2016-02-03T01:15:17.173464959Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
2016-02-03T01:15:17.173491561Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/railties-4.2.1/lib/rails/rack/logger.rb:38:in `call_app'
2016-02-03T01:15:17.173595913Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/railties-4.2.1/lib/rails/rack/logger.rb:20:in `block in call'
2016-02-03T01:15:17.173621789Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/tagged_logging.rb:68:in `block in tagged'
2016-02-03T01:15:17.173727737Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/tagged_logging.rb:26:in `tagged'
2016-02-03T01:15:17.173788517Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/tagged_logging.rb:68:in `tagged'
2016-02-03T01:15:17.173929489Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/railties-4.2.1/lib/rails/rack/logger.rb:20:in `call'
2016-02-03T01:15:17.173962688Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/middleware/request_id.rb:21:in `call'
2016-02-03T01:15:17.174067759Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/rack-1.6.4/lib/rack/methodoverride.rb:22:in `call'
2016-02-03T01:15:17.174095572Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/rack-1.6.4/lib/rack/runtime.rb:18:in `call'
2016-02-03T01:15:17.174192054Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
2016-02-03T01:15:17.174217734Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_dispatch/middleware/static.rb:113:in `call'
2016-02-03T01:15:17.174314899Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/rack-1.6.4/lib/rack/sendfile.rb:113:in `call'
2016-02-03T01:15:17.174339597Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/railties-4.2.1/lib/rails/engine.rb:518:in `call'
2016-02-03T01:15:17.174440163Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/railties-4.2.1/lib/rails/application.rb:164:in `call'
2016-02-03T01:15:17.174465511Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/puma-2.16.0/lib/puma/configuration.rb:81:in `call'
2016-02-03T01:15:17.174562612Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/puma-2.16.0/lib/puma/server.rb:557:in `handle_request'
2016-02-03T01:15:17.174589216Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/puma-2.16.0/lib/puma/server.rb:404:in `process_client'
2016-02-03T01:15:17.174712108Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/puma-2.16.0/lib/puma/server.rb:270:in `block in run'
2016-02-03T01:15:17.174738562Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/puma-2.16.0/lib/puma/thread_pool.rb:106:in `call'
2016-02-03T01:15:17.174848159Z app[web.1]:   vendor/bundle/ruby/2.2.0/gems/puma-2.16.0/lib/puma/thread_pool.rb:106:in `block in spawn_thread'

Request timeout

Apple is taking longer than 30 seconds to respond to the request to invite a user. These are logs as an example:

2016-10-12T16:22:21.454784+00:00 app[web.1]: Processing by InviteController#submit as HTML
2016-10-12T16:22:21.454896+00:00 app[web.1]:   Parameters: {"utf8"=>"✓", "authenticity_token"=>"XXXX", "first_name"=>"Tyler", "last_name"=>"Blueberry", "email"=>"[email protected]", "commit"=>"Get Beta Access"}
2016-10-12T16:22:21.472417+00:00 app[web.1]: Going to create a new tester: [email protected] - Tyler Blueberry
2016-10-12T16:22:51.461781+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=POST path="/submit" host=XXXX.herokuapp.com request_id=XXXX fwd="XXXX" dyno=web.1 connect=1ms service=30000ms status=503 bytes=0
2016-10-12T16:24:36.768031+00:00 app[web.1]: Existing tester [email protected]
2016-10-12T16:24:36.768047+00:00 app[web.1]: Successfully created tester [email protected]
2016-10-12T16:24:36.943163+00:00 app[web.1]: Addding tester to application
2016-10-12T16:24:37.918718+00:00 app[web.1]: Done
2016-10-12T16:25:13.913895+00:00 app[web.1]:   Rendered invite/index.html.erb within layouts/application (3.0ms)
2016-10-12T16:25:13.922352+00:00 app[web.1]: Completed 200 OK in 172467ms (Views: 14.4ms)

Heroku says this about long lived requests:
https://devcenter.heroku.com/articles/request-timeout

The timeout value is not configurable. If your server requires longer than 30 seconds to complete a given request, we recommend moving that work to a background task or worker to periodically ping your server to see if the processing request has been finished. This pattern frees your web processes up to do more work, and decreases overall application response times.

Note the user IS being added. But the server is just giving a bad response after 30 seconds. Pretty undesirable. The boarding app should be smart enough to deal with long lived requests.

Boarding as Rails Engine

Hi,

I am thinking about integrating Boarding on an existing heroku Rails app, so I guess the way to do it is via Rails Engine, I am willing to do it and contribute back but any any help or guidance on that subject would be appreciated.

Thanks

We're sorry, but something went wrong.

From last 5 days my boarding app deployed on heroku is not working. Here is the error log. Can anyone tell that what is the issue?

2016-04-06T11:35:36.236721+00:00 app[web.1]: F, [2016-04-06T11:02:39.440145 #3] FATAL -- :
2016-04-06T11:35:36.236721+00:00 app[web.1]: Spaceship::TunesClient::ITunesConnectError (
2016-04-06T11:35:36.236722+00:00 app[web.1]: aa=7C683082E37CA510A74C001DAB41964B221B24B5F0579866BC03A2D3C079784F4E8FF246E288A4EFB5F8F2D42CB53522BB3C48B07BB11520C5D9D8D3C09A4ED5534BB8AEE51FDAB948365CCC968F2DD2611F877D9A193059650BA07BAB3AEC6F9B45871072CE5C477BDF632A59272EE4A594B374D276269804FD0ECAC5F99E0F162E1831BE76815602D4FCB1BA285FA485CF2BDCF22AE82FF008C492C8A360D547954F81F964569DF1AF0130E0BC565D4A6AA3128C2A2462BBCB2235F3BB5E0BEE9F5FECF3820F0A718FB8E72A0055D6FE6EFF61C4F19021F47D31573B2C4CEBAA15C90518B8E3A36A3463F7BB48205929D5A20F6DA3F4EC73913504A1C46647; Domain=idmsa.apple.com; Path=/; Secure; HttpOnly, site=USA; Domain=.apple.com; Path=/; Secure; HttpOnly, acn01=87bl+Dotzby6ujvUg98WqgsWN6dSZQARA/MjV4hw; Domain=.apple.com; Expires=Thu, 06-Apr-2017 11:02:39 GMT; Path=/; Secure; HttpOnly, X-SESS=6ad0a3de9f1cd76c1214173000a9cd874bb2e37d9d86b23c5e792fecaa372738a1cf95db;Version=1;Max-Age=1800;path=/;secure;httponly):

boarding creates external testers, what about internal?

I tried this workflow out and see that it creates external testers successfully.

Would it be feasible to have it create internal testers? I'm not sure ITC connects allows adding internal/external in the same way, or if there is some other limitation around this.

`#<NoMethodError: undefined method `[]' for nil:NilClass>` -> Something went wrong, please contact the application owner

Hi Felix,

Thanks for putting all the great tools together!

We have run into an issue running and deploying boarding.

Even though boarding successfully creates a tester and adds him/her to the application in iTunes Connect, the web app always responds with the message "Something went wrong, please contact the application owner" along and prints the following output to the log:

Successfully created tester [email protected]
Addding tester to application
Done
#<NoMethodError: undefined method `[]' for nil:NilClass>
/Users/ilias/.rbenv/versions/2.0.0-p643/lib/ruby/gems/2.0.0/gems/spaceship-0.6.1/lib/spaceship/base.rb:41:in `lookup'
/Users/ilias/.rbenv/versions/2.0.0-p643/lib/ruby/gems/2.0.0/gems/spaceship-0.6.1/lib/spaceship/base.rb:43:in `lookup'
/Users/ilias/.rbenv/versions/2.0.0-p643/lib/ruby/gems/2.0.0/gems/spaceship-0.6.1/lib/spaceship/base.rb:28:in `get'
/Users/ilias/.rbenv/versions/2.0.0-p643/lib/ruby/gems/2.0.0/gems/spaceship-0.6.1/lib/spaceship/base.rb:84:in `block (3 levels) in mapping_module'
/Users/ilias/Desktop/cf-boarding/app/controllers/invite_controller.rb:149:in `block in testing_is_live?'
/Users/ilias/Desktop/cf-boarding/app/controllers/invite_controller.rb:148:in `each'
/Users/ilias/Desktop/cf-boarding/app/controllers/invite_controller.rb:148:in `testing_is_live?'
/Users/ilias/Desktop/cf-boarding/app/controllers/invite_controller.rb:65:in `submit'

(I've also tried with Ruby 2.2.3 and got the same results.)

Any idea what's going on here? Its the same for new users as well as users that have already signed up. I peeked in spaceship/base.rb for a hot second but unfortunately I'm not particularly well-versed in the intricacies of Ruby.

Support for multiple apps

It would be super if boarding could support signup for multiple app TestFlights using a single server instance.

Perhaps extend ITC_APP_ID environment variable to permit a delimited string of multiple app IDs?

Heroku Configuration

Heroku recommends adding the rails_12factor gem in production and using a Procfile to specify a web server that is not webrick.

Not working - including your example!

I tried to run my copy of boarding (which I installed a week ago, and it worked then) on heroku, and got:

"Something went wrong"

I then tried your example installation and the same thing happened.

Here's the log from my installation:

2015-08-14T19:36:14.415804+00:00 heroku[web.1]: Unidling
2015-08-14T19:36:14.416220+00:00 heroku[web.1]: State changed from down to starting
2015-08-14T19:36:18.372892+00:00 heroku[web.1]: Starting process with command `bin/rails server -p 36205 -e production`
2015-08-14T19:36:24.459038+00:00 app[web.1]: [2015-08-14 19:36:24] INFO  ruby 2.0.0 (2015-04-13) [x86_64-linux]
2015-08-14T19:36:24.458943+00:00 app[web.1]: [2015-08-14 19:36:24] INFO  WEBrick 1.3.1
2015-08-14T19:36:24.459592+00:00 app[web.1]: [2015-08-14 19:36:24] INFO  WEBrick::HTTPServer#start: pid=3 port=36205
2015-08-14T19:36:25.016358+00:00 heroku[web.1]: State changed from starting to up
2015-08-14T19:36:27.209969+00:00 heroku[router]: at=info method=GET path="/?token=(removed)" host=intense-forest-3864.herokuapp.com request_id=67e986a7-0d6b-47b5-b518-5f212cdf8412 fwd="173.11.115.138" dyno=web.1 connect=0ms service=675ms status=500 bytes=1754
2015-08-14T19:36:27.893753+00:00 heroku[router]: at=info method=GET path="/favicon.ico" host=intense-forest-3864.herokuapp.com request_id=a92052c4-59d8-46f3-a673-7cf0917469f8 fwd="173.11.115.138" dyno=web.1 connect=0ms service=6ms status=200 bytes=228
2015-08-14T19:36:40.070091+00:00 heroku[router]: at=info method=GET path="/?token=(removed)" host=intense-forest-3864.herokuapp.com request_id=ff0cffee-2632-4f6b-829c-626cf20b21fb fwd="173.11.115.138" dyno=web.1 connect=0ms service=423ms status=500 bytes=1754
2015-08-14T19:38:59.293794+00:00 heroku[router]: at=info method=GET path="/" host=intense-forest-3864.herokuapp.com request_id=aedca6c7-255c-41d1-9a85-8bf1ba6cc29d fwd="173.11.115.138" dyno=web.1 connect=1ms service=517ms status=500 bytes=1754
2015-08-14T19:46:51.926260+00:00 heroku[router]: at=info method=GET path="/" host=intense-forest-3864.herokuapp.com request_id=de48de70-e76f-45fb-b06a-9a3206550197 fwd="173.11.115.138" dyno=web.1 connect=7ms service=527ms status=500 bytes=1754
2015-08-14T19:46:52.780666+00:00 heroku[router]: at=info method=GET path="/" host=intense-forest-3864.herokuapp.com request_id=cc15d177-73cb-4878-a89c-b1e87760ed94 fwd="173.11.115.138" dyno=web.1 connect=4ms service=398ms status=500 bytes=1754

:(

Boarding usage regarding the app approbation by apple

not really an issue but I has a doubt and I found no information about it.

I have an app which is still "waiting for review" and has never been publish on the app store. The app has been approved for beta testing but it's impossible to create a new tester through the form:

2016-03-17T15:39:08.481772 #19044] INFO -- : Going to create a new tester: [email protected] - Xxxxx Xxxxxxx
[2016-03-17T15:39:10.928867 #19044] FATAL -- : # < NameError: uninitialized constant InviteController::Helper >
[2016-03-17T15:39:10.929063 #19044] FATAL -- : /var/app/current/app/controllers/invite_controller.rb:58:in `submit'

It seems that the app crash when it test if the email already exist as external tester on itunes connect. Required environments variables are right but it's doesn't work. I think that I have to wait until the approval for the App store, can anyone confirm that?

User not added to testflight

I installed boarding on Heroku and it worked for few hours.

My coworker, tried to signup with his email (he is internal tester in testflight) and now its not working for anybody.

I always get message Successfully added you as a tester. Check your email inbox for an invite, but I can't see user in Testflight and I don't get email.

I checked heroku logs and it seems that when new user makes a request, its still trying to add the the existing user. I also tried to create a new heroku project, but It's the same issue.

Started POST "/submit" for 37.157.38.10 at 2016-04-20 15:44:53 +0000
2016-04-20T15:44:53.638113+00:00 app[web.1]: Processing by InviteController#submit as HTML
2016-04-20T15:44:53.638159+00:00 app[web.1]:   Parameters: {"utf8"=>"✓", "authenticity_token"=>"XXX==", "first_name"=>"Teest", "last_name"=>"Teest", "email"=>"[email protected]", "commit"=>"Get Beta Access"}
2016-04-20T15:44:53.638867+00:00 app[web.1]: Going to create a new tester: [email protected] - Teest Teest
2016-04-20T15:44:57.956620+00:00 app[web.1]: Existing tester [email protected]
2016-04-20T15:44:57.956652+00:00 app[web.1]: Successfully created tester [email protected]
2016-04-20T15:44:57.957925+00:00 app[web.1]: Addding tester to application
2016-04-20T15:44:59.439821+00:00 app[web.1]: Done
2016-04-20T15:45:02.015133+00:00 heroku[router]: at=info method=POST path="/submit" host=getfirefly.herokuapp.com request_id=XXXXXX fwd="37.157.38.10" dyno=web.1 connect=0ms service=8395ms status=200 bytes=2132
2016-04-20T15:45:02.027538+00:00 app[web.1]:   Rendered invite/index.html.erb within layouts/application (0.2ms)
2016-04-20T15:45:02.028003+00:00 app[web.1]: Completed 200 OK in 8390ms (Views: 0.9ms)

Invalid username and password combination

Since some days I get following error message

Invalid username and password combination. Used '[email protected]' as the username.
    def login
      return if @spaceship
      @spaceship = Spaceship::Tunes.login(user, password)
    end

    def set_app_details

Changing password or removing and readding the user didn't work as a workaround.

Full Admin Panel

I wrote @KrauseFx an email the other day about this. After playing with this, the idea is great, however, I (and I am sure many other would feel the same) don't like the current flow where anyone can actually add themselves to TestFlight. Before Apple bought them, you were able to share a link to a page where people could sign up and join, but you had to approve people.

  1. Enable or Disable Signups
  2. Set a date signups are open
  3. Set a limit on signups
  4. Enable automatic TestFlight enrollment
  5. Approve/Deny Signups.

The first three are pretty self explanatory, but let me go into detail about the 5th. Basically, a system I would use would work like this.
You create the heroku app, setup everything like you do now, but you also create an admin account(s) which would allow you to manage the app persay. If Option #4 is disabled and you have it set to approve or deny signups, you would be presented with a list of people who signed up via the form. From here you can then approve users, thus enrolling them in TestFlight.

It's just an idea so if anyone has any suggestions or comments, feel free to leave them.

Heroku error

It looks like the puma config was causing issues with deploying to heroku: I was getting "uninitialized constant ActiveRecord (NameError)" when the puma process was starting up. Changing the on_worker_boot block like so fixed it for me:

on_worker_boot do
  ActiveSupport.on_load(:active_record) do
    config = ActiveRecord::Base.configurations[Rails.env] ||
                Rails.application.config.database_configuration[Rails.env]
    config['pool'] = ENV['MAX_THREADS'] || 5
    ActiveRecord::Base.establish_connection(config)
  end
end

Enable/Disable Signups

There are two things I would like to see in this.

  1. Being able to manually enable/disable signups
  2. Automatically disable logins after a certain amount of signups.

Not sure if the latter is possible, but knowing you, you'll figure it out

Creating new beta tester Forbidden

Hey,

I'm trying to register a new beta-tester for one of my apps. But seems my ITC user is not allowed to do so with boarding. In ITC-Portal its working well.
My ITC-User has a Technical role
I've installed boarding on my local machine for testing. Could this be the problem?

This is what I get

UnexpectedResponse: {"data"=>nil, "messages"=>{"warn"=>nil, "error"=>["Forbidden"], "info"=>nil}, "statusCode"=>"ERROR"}>

Updated to newest release but still getting #<NoMethodError: undefined method `[]' for nil:NilClass>

Installed a brand new app via 'deploy to heroic' button as a clean test bed and still getting the following error - same as the install / updated build on an older setup. Really not sure whats happening here, any help pointing me in the right direction would be much appreciated

#<NoMethodError: undefined method `[]' for nil:NilClass>
2015-10-13T19:58:00.292065+00:00 app[web.1]: F, [2015-10-13T19:58:00.291943 #3] FATAL -- : /app/vendor/bundle/ruby/2.0.0/gems/spaceship-0.9.0/lib/spaceship/base.rb:43:in `lookup'

original app - firstpersonnews.herokuapp.com
new test app - firstpersonnews-test.herokuapp.com

Could not fetch the login URL from iTunes Connect, the server might be down

Hi! Love this project and want to use it so badly, but when trying to use locally, I get this error... My username, password and app ID are all set... Is it a problem with me? Or boarding? Thanks for any help!

SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
Completed 500 Internal Server Error in 7224ms

RuntimeError (Could not fetch the login URL from iTunes Connect, the server might be down):
  app/controllers/invite_controller.rb:131:in `login'
  app/controllers/invite_controller.rb:111:in `app'
  app/controllers/invite_controller.rb:123:in `block in app_metadata'
  app/controllers/invite_controller.rb:121:in `app_metadata'
  app/controllers/invite_controller.rb:135:in `set_app_details'


  Rendered /Users/sawteeth/.rvm/gems/ruby-2.2.3@global/gems/actionpack-4.2.1/lib/action_dispatch/middleware/templates/rescues/_source.erb (4.2ms)
  Rendered /Users/sawteeth/.rvm/gems/ruby-2.2.3@global/gems/actionpack-4.2.1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (1.7ms)
  Rendered /Users/sawteeth/.rvm/gems/ruby-2.2.3@global/gems/actionpack-4.2.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (0.8ms)
  Rendered /Users/sawteeth/.rvm/gems/ruby-2.2.3@global/gems/actionpack-4.2.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout (45.6ms)
  Rendered /Users/sawteeth/.rvm/gems/ruby-2.2.3@global/gems/web-console-2.2.1/lib/web_console/templates/_markup.html.erb (0.3ms)
  Rendered /Users/sawteeth/.rvm/gems/ruby-2.2.3@global/gems/web-console-2.2.1/lib/web_console/templates/_inner_console_markup.html.erb within layouts/inlined_string (0.2ms)
  Rendered /Users/sawteeth/.rvm/gems/ruby-2.2.3@global/gems/web-console-2.2.1/lib/web_console/templates/_prompt_box_markup.html.erb within layouts/inlined_string (0.3ms)
  Rendered /Users/sawteeth/.rvm/gems/ruby-2.2.3@global/gems/web-console-2.2.1/lib/web_console/templates/style.css.erb within layouts/inlined_string (0.2ms)
  Rendered /Users/sawteeth/.rvm/gems/ruby-2.2.3@global/gems/web-console-2.2.1/lib/web_console/templates/console.js.erb within layouts/javascript (48.3ms)
  Rendered /Users/sawteeth/.rvm/gems/ruby-2.2.3@global/gems/web-console-2.2.1/lib/web_console/templates/main.js.erb within layouts/javascript (0.5ms)
  Rendered /Users/sawteeth/.rvm/gems/ruby-2.2.3@global/gems/web-console-2.2.1/lib/web_console/templates/error_page.js.erb within layouts/javascript (0.3ms)
  Rendered /Users/sawteeth/.rvm/gems/ruby-2.2.3@global/gems/web-console-2.2.1/lib/web_console/templates/index.html.erb (106.9ms)

NoMethodError (undefined method `apple_id')

Hey guys,

I just tried out boarding and deployed to Heroku (which I'm new to...).

After entering the data the script runs through successfully but visiting the site shows an error. The log has the following to say:

2016-05-13T08:54:29.350956+00:00 app[web.1]: Completed 500 Internal Server Error in 2340ms
2016-05-13T08:54:29.351550+00:00 app[web.1]: 
2016-05-13T08:54:29.351560+00:00 app[web.1]: NoMethodError (undefined method 'apple_id' for nil:NilClass):
2016-05-13T08:54:29.351565+00:00 app[web.1]: 
2016-05-13T08:54:29.351563+00:00 app[web.1]:   app/controllers/invite_controller.rb:132:in 'block in app_metadata'
2016-05-13T08:54:29.350956+00:00 app[web.1]: Completed 500 Internal Server Error in 2340ms
2016-05-13T08:54:29.351550+00:00 app[web.1]: 
2016-05-13T08:54:29.351564+00:00 app[web.1]:   app/controllers/invite_controller.rb:145:in 'set_app_details'
2016-05-13T08:54:29.351563+00:00 app[web.1]:   app/controllers/invite_controller.rb:130:in 'app_metadata'
2016-05-13T08:54:29.351562+00:00 app[web.1]:   app/controllers/invite_controller.rb:124:in 'app'
2016-05-13T08:54:29.351565+00:00 app[web.1]: 
2016-05-13T08:54:29.351561+00:00 app[web.1]:   app/controllers/invite_controller.rb:112:in 'block in apple_id'
2016-05-13T08:54:29.351563+00:00 app[web.1]:   app/controllers/invite_controller.rb:132:in 'block in app_metadata'
2016-05-13T08:54:29.351565+00:00 app[web.1]: 
2016-05-13T08:54:29.350956+00:00 app[web.1]: Completed 500 Internal Server Error in 2340ms
2016-05-13T08:54:29.351560+00:00 app[web.1]: NoMethodError (undefined method 'apple_id' for nil:NilClass):
2016-05-13T08:54:29.351564+00:00 app[web.1]:   app/controllers/invite_controller.rb:145:in 'set_app_details'
2016-05-13T08:54:29.351563+00:00 app[web.1]:   app/controllers/invite_controller.rb:130:in 'app_metadata'
2016-05-13T08:57:35.284705+00:00 app[web.1]: Started GET "/" for 46.252.131.226 at 2016-05-13 08:57:35 +0000
2016-05-13T08:57:35.285333+00:00 app[web.1]: Processing by InviteController#index as HTML

Any idea?

500 error We're sorry, but something went wrong.

Getting this when I deployed after following your steps with the heroku button. It seemed to install perfectly but when opening the app I get the "We're sorry, but something went wrong." error message.
My logs are below the image, not sure what to do. I saw in a related issue someone had an outdated version but mine is direct from the heroku button on the github code page in your readme.

image

--LOGS--
2016-08-24T21:09:21.835126+00:00 app[web.1]: Completed 500 Internal Server Error in 126ms
2016-08-24T21:09:21.835623+00:00 app[web.1]: app/controllers/invite_controller.rb:125:in app' 2016-08-24T21:09:21.835626+00:00 app[web.1]: app/controllers/invite_controller.rb:150:inset_app_details'
2016-08-24T21:09:21.835626+00:00 app[web.1]:
2016-08-24T21:09:21.835625+00:00 app[web.1]: app/controllers/invite_controller.rb:135:in app_metadata' 2016-08-24T21:09:21.818506+00:00 heroku[router]: at=info method=GET path="/" host=hurdle-customer-beta.herokuapp.com request_id=a32f118f-f75f-45db-a39a-1f3662f9eb48 fwd="8.31.229.4" dyno=web.1 connect=1ms service=129ms status=500 bytes=1669 2016-08-24T21:11:13.335614+00:00 app[web.1]: Started GET "/" for 8.31.229.4 at 2016-08-24 21:11:13 +0000 2016-08-24T21:11:13.336160+00:00 app[web.1]: Processing by InviteController#index as HTML 2016-08-24T21:11:13.455621+00:00 app[web.1]: app/controllers/invite_controller.rb:150:inset_app_details'
2016-08-24T21:11:13.455621+00:00 app[web.1]:
2016-08-24T21:11:13.440151+00:00 heroku[router]: at=info method=GET path="/" host=hurdle-customer-beta.herokuapp.com request_id=bca36c3f-3432-4ac2-b952-bfaec52b3112 fwd="8.31.229.4" dyno=web.1 connect=2ms service=122ms status=500 bytes=1669
2016-08-24T21:11:14.215861+00:00 heroku[router]: at=info method=GET path="/favicon.ico" host=hurdle-customer-beta.herokuapp.com request_id=77453b6e-ab4d-4f9d-9cc0-912a5c834120 fwd="8.31.229.4" dyno=web.1 connect=1ms service=2ms status=200 bytes=143

[Feature] URL parameter form submission

I don't know if I've used the correct term for this, but I'd love to be able to use a URL like:

http://mygreatapp.herokuapp.com/submit?firstname=Bob&secondname=Brown&[email protected]

that basically skips the form submission page. Main use case that I'm thinking of is a mailing list, where the name and email is already known - this would be amazing.

Perhaps it's already possible, and I've missed it? If not, it doesn't seem like something that would be too hard to add.

Show error if user has already been added

If an email address is already on the list, and you try to add it again, you get this message: "Successfully added you as a tester. Check your email inbox for an invite"

This is misleading, because no new email is sent.

Easy fix is to change the message. Would be even better to remove and re-add them, so the email is actually sent again.

dyno does not live long

Hi, I'm using boarding on 2 free dynos. when i first deploy them they are fine for a few days. after that, they seem dead and i get this (attached image). I'm sure there is something I'm missing, as I'm not that familiar with heroku. Any suggestions what might cause this? Thanks.

screen shot 2016-04-02 at 10 52 19 am

ITC Api Change

"Something went wrong, please contact the application owner" is back.

Constantly returning the following error now:
#<Spaceship::Client::UnexpectedResponse: { "data"=>nil, "messages"=>{"warn"=>nil, "info"=>nil, "error"=>["service_http_bad_response"]}, "statusCode"=>"ERROR"}>

New Heroku App Failing

I deployed boarding to Heroku and set the environment variables correctly. When I go the the site, I get the We're sorry, but something went wrong error. I checked the logs and it seems like it is failing to log in, but there isn't a clear error. I have two factor authentication enabled for my apple id, could this be causing the problem?

Below is what is in the log, it appears to be logging some kind of cookie related to the authentication, which I have removed.

2016-04-04T10:34:33.614035+00:00 app[web.1]: Spaceship::TunesClient::ITunesConnectError ({}
2016-04-04T10:34:33.614039+00:00 app[web.1]: COOKIE REMOVED):
2016-04-04T10:34:33.614040+00:00 app[web.1]:   app/controllers/invite_controller.rb:140:in `login'
2016-04-04T10:34:33.614040+00:00 app[web.1]:   app/controllers/invite_controller.rb:120:in `app'
2016-04-04T10:34:33.614041+00:00 app[web.1]:   app/controllers/invite_controller.rb:132:in `block in app_metadata'
2016-04-04T10:34:33.614042+00:00 app[web.1]:   app/controllers/invite_controller.rb:130:in `app_metadata'
2016-04-04T10:34:33.614044+00:00 app[web.1]: 
2016-04-04T10:34:33.612651+00:00 app[web.1]: Completed 500 Internal Server Error in 476ms

Feature request: Approve new testers

I've been looking for something like this for a while. However even the password option does not seem secure enough. The password could be easily shared or posted online. I'd like to approve each person who signs up individually.

Login issue

My boarding landing page isn't showing up (500 error), and when I check the logs it shows a bunch of html with the message "Your sign in cannot be completed because you have no trusted devices listed for your account. Visit the Apple ID site and use your Recovery Key to add trusted devices.". What's happening here? Everything was working as required a couple of weeks ago. I deployed a brand new heroic project using the deploy button and get the same error.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.