2016-08-31 13 views
3

В моем приложении Rails 5 на Heroku я пытаюсь создать маршрут для этого URL-адреса: http://beta.example.com/.well-known/acme-challenge/some-key, поэтому я могу проверьте мой сервер с Let's Encrypt, чтобы получить сертификат SSL. Но я не могу заставить маршрут работать с ведущей точкой или периодом в любом сегменте маршрута, он просто возвращает 404 Not Found.Не удается создать маршрут с сегментом с ведущей точкой в ​​Rails (для проверки Let's Encrypt)

Другими словами, точка в начале .well-known завинчивается. Я могу получить маршрут для работы без точки, или если точка находится где-то в другом месте (например, well.known), но если точка является первым символом в сегменте, она не работает.

Я начал с этим:

get "/.well-known/acme-challenge/:id" => "pages#letsencrypt" 

Когда это не сработало, я попытался с помощью (dynamic segment):

get ':letsencrypt_route/acme-challenge/:id', to: "pages#letsencrypt", letsencrypt_route: /[^\/]+/ 

Это позволит точку в любом месте в сегменте ... кроме как первый символ, который там, где он мне нужен.

Любая идея, что вызывает это? Когда я пытаюсь перейти к URL-адресу, который имеет ведущую точку в сегменте, он даже ничего не показывает в моем журнале, это просто немедленный 404.

Я видел некоторых людей, имеющих эту проблему на обоих Rails 4 и Rails 5, и это происходит для меня, используя либо Thin, либо Puma, и как в разработке, так и в производстве. Я также пробовал использовать пару драгоценных камней letencrypt, но он останавливается в одной точке.

Вот мой Gemfile с драгоценными камнями в обеих средах:

source "https://rubygems.org" 

ruby "2.3.1" 

gem "rails", "5.0.0.1" 

gem "pg", "0.18.4" # postgresql database 
gem "twitter-bootstrap-rails", "~> 3.2.2" 

gem "active_median", "~> 0.1.0" # used with chartkick for graph reporting 
gem "activerecord-session_store", require: false # save session to database 
gem "acts-as-taggable-on", git: "https://github.com/mbleigh/acts-as-taggable-on" # tagging 
gem "administrate", git: "https://github.com/heyogrady/administrate", branch: "rails5" 
gem "analytics-ruby", "~> 2.0.0", require: "segment/analytics" # segment.io 
gem "arel" 
gem "autoprefixer-rails" # for CSS vendor prefixes 
gem "bootbox-rails", "~>0.4" # wrappers for javascript dialogs 
gem "bootstrap-switch-rails" # bootstrap-switch.js 
gem "bourbon" 
gem "bower-rails" # install front-end components 
gem "browser" # For variants support 
gem "carrierwave" # for handling file uploads 
gem "carmen-rails" # country and region selection 
gem "chartkick", "~> 1.2.4" # used to provide nice looking charts 
gem "chronic" # natural language date parser 
gem "codemirror-rails", ">= 5.11" # display source code in pattern library 
gem "coffee-rails", ">= 4.1.1" 
gem "coffee-script-source", ">= 1.8.0" # Coffee script source 
gem "country_select" # HTML list of countries 
gem "dalli" # for memcached 
gem "delayed_job_active_record", ">= 4.1" # background job processing 
gem "delayed_job_web", ">= 1.2.10" # web interface for delayed job 
gem "devise", ">= 4.2.0" 
gem "devise-async", git: "https://github.com/mhfs/devise-async", branch: "devise-4.x" # for user authentication 
gem "flamegraph" # super pretty flame graphs 
gem "fog", require: false # for handling s3 
# gem "font_assets" # Handle Cross-Origin Resource Sharing on fonts 
gem "font_assets", git: "https://github.com/ericallam/font_assets", ref: "457dcfddc4318e83679e9a0935612924b7717085" 
gem "friendly_id", "~> 5.1.0" 
gem "fullcontact" # social profile info from fullcontact.com 
gem "fuzzy_match" # used by smart_csv_parser for contact & address mapping 
gem "google-api-client", "< 0.9", require: "google/api_client" # connecting to Google API 
gem "groupdate", "~> 2.1.1" # used with chartkick for graph reporting 
gem "handy", git: "https://github.com/heyogrady/handy" 
gem "hike" # finds files in a set of paths 
gem "honeybadger" # for error tracking 
gem "intercom-rails" # tracking user behavior 
gem "jbuilder", ">= 2.4.1" # for building JSON 
gem "jquery-fileupload-rails", "~> 0.4.6" # file uploads 
gem "jquery-rails" # jQuery 
gem "jquery-ui-rails" # jQuery UI 
gem "json" # for parsing JSON 
gem "kaminari" # pagination 
gem "le" # logentries 
gem "less-rails", ">= 2.7.1" # LESS => CSS 
gem "lograge" # better log formatting 
gem "mandrill-api" # sending and tracking emails 
gem "mechanize" # for screen scraping 
gem "memory_profiler" # lets us use rack-mini-profilers GC features 
gem "mini_magick" # processing images 
gem "newrelic_rpm" # monitor app performance 
gem "nylas", "1.1.0" # emails, calendar, contacts via Nylas.com 
gem "oink" 
gem "omniauth" # third party authentication 
gem "omniauth-google-oauth2" # Google authentication 
gem "omnicontacts" # retrieve contacts from email providers 
gem "open_uri_redirections" # allow OpenURI redirections from HTTP to HTTPS 
gem "paper_trail" # maintain record of stripe plans & subscriptions 
gem "prawn-labels" # PDF labels 
gem "puma" # server 
gem "public_activity" # for model activity tracking 
gem "rack-mini-profiler", require: false # display page load time badge 
gem "rack-timeout" # raise error if Puma doesn't respond in given time 
gem "rack-zippy" # serve gzipped assets 
gem "rails-deprecated_sanitizer" # Our app uses old sanitizer methods. 
gem "react-rails", "~> 1.6.0" 
gem "responders", "~> 2.0" # respond_with and respond_to methods 
gem "rest-client" 
gem "sass-rails", ">= 5.0.3" 
gem "semantic-ui-sass", git: "https://github.com/heyogrady/semantic-ui-sass" 
gem "select2-rails" # select/search/dropdown box 
gem "selenium-webdriver", require: false # screen-scraping 
gem "signet" 
gem "simple_form", ">= 3.2.1" # forms made easy for rails 
gem "sinatra", git: "https://github.com/sinatra/sinatra" 
gem "stripe", "~> 1.15.0" # charging customers 
gem "stripe_event" # Stripe webhook integration 
gem "stackprof" # a stack profiler 
gem "state_machines-activemodel", ">= 0.4.0.pre" 
gem "state_machines-activerecord", ">= 0.4.0.pre" 
gem "toastr-rails" # display toaster notifications 
gem "therubyracer", platforms: :ruby 
gem "turbolinks", "~> 5.0.0.beta" # faster page loads 
gem "twilio-ruby" # phone and SMS services 
gem "twitter-typeahead-rails", "~> 0.11.1.pre.corejavascript" # typeahead.js - autocomplete 
gem "uglifier", ">= 1.0.3" 
gem "uuidtools" 
gem "valid_email" # email validation 
gem "wicked" # multi-page wizard forms 
gem "yaml_db", git: "https://github.com/heyogrady/yaml_db", branch: "monkey-patch-rails-5" # import/export yml->db 
gem "yaml_dump", git: "https://github.com/vanboom/yaml_dump" # dump db records to yaml files 
# gem "zeroclipboard-rails", "~> 0.1.1" # copy to clipboard 
+1

Вы посмотрели на это? http://stackoverflow.com/questions/5369654/why-do-routes-with-a-dot-in-a-parameter-fail-to-match – steel

+0

Или это? http://www.virtuouscode.com/2010/06/18/rails-3-resource-routes-with-dots-or-how-to-make-a-ruby-developer-go-a-little-bit- insane/ – steel

+1

@steel yes - и оба эти метода работают, чтобы добавить точки в сегмент, но он все равно не работает, если точка является первым символом в сегменте –

ответ

0

Проблемы была с стоечных энергичным драгоценным камнем. Когда я удалил драгоценный камень и инициализатор, маршрут работал нормально.

Не уверен, что основной причиной было gzipping в целом, этот конкретный камень или тот факт, что драгоценный камень был явно избыточным для моего приложения Rails 5. От rack-zippy github page:

Хотите использовать стойку-zippy с Rails v4.2 или больше? Его не рекомендуется! Rails 4.2+ теперь поддерживает прямое использование файлов gzipped , так что нет необходимости в стойке в Rails 4.2+ приложениях.

Если у кого-то еще есть аналогичная проблема, я бы искал любые драгоценные камни или настройки, которые влияют на ваше промежуточное ПО.

 Смежные вопросы

  • Нет связанных вопросов^_^