0

アプリケーションがダウンしていても、アプリケーションの一部のページにアクセスできる必要があります。たとえば、50x エラーのページ。これを行う最も簡単な方法は、Web サーバー (Nginx の apache など) によって提供される静的な HTML ページを作成することです。このページのほとんどは、アプリケーションと共通のレイアウトを持っています。したがって、アプリケーションのレイアウトの一部を変更する場合、すべての静的ページを手動で変更する必要があります。

Railsページを静的ファイルとして保存し、プロジェクトの同じ変更で(自動またはrakeタスクによって)再作成する最良の方法は何ですか? Rails のレイアウトとリソース (CSS、js、画像) を再利用できる Rails または静的サイト ジェネレーターの任意の gem です。

4

2 に答える 2

2

通常、静的コンテンツはpublicフォルダーに入れられ、Nginx または同等のものを構成して、Rails にアクセスする必要さえなく、それに応じてルーティングできます。

Ruby での静的サイト生成については、Jekyll https://jekyllrb.com/を確認してください。Rails サイトとは別に Jekyll サイトを管理し、デプロイ時に静的な HTML/CSS/JS を生成できます。jekyll watchファイルの編集をリッスンし、それに応じて静的コンテンツをコンパイルするコマンドがあります。

于 2016-04-13T19:30:21.933 に答える
0

VIEW_PATH からすべてのファイルをロードし、アプリケーション レイアウトでラップし、パブリックの同じパスに保存する単純な rake タスク (GIST 経由) があります。Rails 4 で作業します。

https://gist.github.com/potapuff/090b2da4a4156c1272430241cb70edc0

namespace :static do
  desc 'Render all resources'
  task :publicate => :environment do
    resources(VIEW_PATH).each do |src, dest|
      html= controller.render_to_string(file:src, layout:'application')
      dirname = File.dirname(dest)
      unless File.directory?(dirname)
        FileUtils.mkdir_p(dirname)
      end
      File.write(dest, html)
    end
  end

  def resources search_path
      ... 
  end

  def controller
    ApplicationController.new.tap do |controller|
       ...
    end
  end
end

他の可能性は、 gem render_anywhere を使用することです。

Rails 5 では、レンダー外部コントローラーを使用する新しい機能があります https://medium.com/evil-martians/the-rails-5-post-9c76dbac8fc#1b36

于 2016-04-18T18:50:44.527 に答える