2016-04-13 7 views
0

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

レールページを静的ファイルとして保存し、プロジェクトの同じ変更に対して自動的にまたはレーキタスクによって再作成する最も良い方法は何ですか?レールのレイアウトやリソース(CSS、js、画像)を再利用できるレールや静的サイト生成ツールのための宝石ですか?

答えて

0

VIEW_PATHからすべてのファイルをロードし、アプリケーションレイアウトでラップし、同じパスの下にパブリックに格納する単純なレーキタスク(GIST経由)があります。他の可能性は宝石render_anywhereを使用している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 

で動作します。 Railsの5では

私はジキルでレールのレイアウトを再利用することができ、我々は外のコントローラ https://medium.com/evil-martians/the-rails-5-post-9c76dbac8fc#1b36

2

一般的に、静的コンテンツはpublicフォルダにあり、Nginxを構成するか、それに応じてRailsを実行する必要はありません。

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

+0

をレンダリング使用する新しい能力を持っていますか?いいえ - 私は2つの別々のレイアウトを持つ必要があり、2つの離れた場所で修正を加えました。 – potapuff

+0

私は気づいていません。最終的にレイアウトはHTMLにレンダリングされるので、レイアウトの処理済みHTMLをJekyllにコピーすることができます。理想的ではありませんが、うまくいくでしょう。しかし、それを行うライブラリ/ gem /ツールがあるかもしれません。わからない。 –

+0

Railsレイアウトの再利用に関するBloggy(Jekyllベース)のhttps://github.com/zbruhnke/bloggy/issues/2に関する問題を読んでいます。すべてのソリューションはFrainkinshtainのようで、Hight Voltageのような多くの外部の宝石が必要です。 – potapuff

関連する問題