Не удается заставить Heroku обслуживать общедоступную страницу index.html. - PullRequest
0 голосов
/ 16 ноября 2018

Последние пару дней я пытался запустить свой проект https://github.com/robdrosenberg/news-hunt на Heroku, и heroku не будет показывать мою публичную страницу / index.html.

Вот ошибка, которую я сейчас получаю:

ActionController::RoutingError (No route matches [GET] "/")

Эта ошибка возникла во всем StackOverflow, и я перепробовал столько решений, сколько смог.

Например, маршрутизация к файлу напрямую через контроллер приветствия также выдает ошибку

Маршруты

Rails.application.routes.draw do
  post 'user_token' => 'user_token#create'
  post 'users' => 'users#create'
  namespace :api do
    get 'reddit' => 'posts#reddit'
    get 'producthunt' => 'posts#producthunt'
    get 'medium' => 'posts#medium'
    get 'hackernews' => 'posts#hackernews'
    get 'githubtrending' => 'posts#githubtrending'
    get 'all' => 'posts#all'
    get 'bookmarks' => 'bookmarks#index'
    post 'bookmarks' => 'bookmarks#create'
    delete 'bookmarks' => 'bookmarks#destroy'
  end
  root 'welcome#index'
end

Контроллер

class WelcomeController < ApplicationController
  def index
    render file: Rails.root.join('public','index.html')
  end
end

Error

ActionView::MissingTemplate (Missing template public/index.html with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :jbuilder]}. Searched in: app/app/views

Изменение config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present? на = true не имеет значения.

Я пытался использовать перенаправления, которые приводили к сбою приложения из-за слишком большого числа перенаправлений.

То, что я нахожу странным, это когда я пытаюсь отобразить файл, который он ищет, непосредственно в папке app / views. Все отлично работает локально, так что должно быть что-то с производственной средой и Heroku.

Я использую Rails в режиме API и использую Vue через CDN в моем файле index.html.

Я развернул другой проект таким же образом, и у меня не было проблем. Вы можете найти эту кодовую базу здесь: https://github.com/robdrosenberg/commitment-ledger.

Любая помощь очень ценится!

Ответы [ 3 ]

0 голосов
/ 16 ноября 2018

Есть ли причина, по которой вы хотите перенаправить на public / index? Конечно, я не знаю вашу заявку, поэтому это может быть бесполезно. Рассматривали ли вы перемещение вашего файла index.html в каталог views / welcome? Это местоположение по умолчанию, из которого метод welcome # index будет отображать файл.

0 голосов
/ 16 ноября 2018

У вас на самом деле нет страницы public/index.html в этом репо, а скорее public/Index.html (обратите внимание на регистр 'i' и 'I').Это не будет иметь большого значения, если вы разрабатываете для Windows или Mac, но в Linux (который используется в Heroku) они будут обрабатываться как разные файлы.

Переименуйте файл в index.html (используйтеgit mv и не забудьте зафиксировать) и это должно сработать.

0 голосов
/ 16 ноября 2018

Попробуйте добавить это в config/routes.rb файл:

get '', to: redirect('/Index.html')

Таким образом, запросы к корню приложения будут перенаправляться в файл индекса в общей папке.

Как упоминалось ниже, вы назвали файл с большой буквы "I", вам нужно будет использовать тот же регистр при ссылке на него в приведенном выше редиректе, как обновленный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...