私が正しくあなたを理解していた場合、あなたは、Rubyを使用しながら、静的なファイルを提供する疑問を抱いています。
Ruby標準ライブラリ(WEBrick)の一部として提供されるビルトインサーバーは、本番環境や重い負荷(大容量ファイル)に最適ではないため、この回答を追加しています。
一般に、ほとんどの本番環境では、ネットワークスタックが少し異なります。多くの場合、nginx/Apache層は静的ファイルを処理し、Rubyサーバは動的コンテンツを処理します。
しかし、(リソースを犠牲にして)人生を楽にするために、Rubyのほとんどのフレームワーク(Rails、Sinatraなど)は静的ファイルの提供と動的機能をサポートしています。
あなたは、フレームワークを使用するか、または静的なファイルを提供するために(ほとんどのフレームワークで使用されるプラットフォームである)ラックに見ることができます。また
、ここで
が直接ラックを使用したアプローチだと、このような
puma
など、ほとんどのRubyサーバ(で使用することができるような
iodine
(私は著者だ)サービス提供の静的ファイルをサポートして...いくつかのRubyのサーバ、 、
iodine
,
thin
など)。
ここでは、アプリケーションのルートにconfig.ru
という名前のファイルに次を保存し、簡単なRackアプリケーションです:あなたは...コマンドライン実行からルビーサーバーの宝石をインストールしてください
# Our app will simply return a 404 not found code
RESPONSE = [404, { 'Content-Type'.freeze => 'text/html'.freeze,
'Content-Length'.freeze => '14'.freeze }.freeze,
['File Not Found'.freeze]].freeze
# This is the application object
app = proc do |_env|
RESPONSE
end
# We will use the Rack static file service middleware.
# You might want to update the folder name.
use Rack::Static, :root => 'public'
run app
することができます次のいずれかを使用します。
gem install puma
# or
gem install iodine
# or
gem install thin
次に、単純に(あなたのルビーアプリケーションconfig.ru
が置かれているフォルダ内の)コマンドラインからサーバーを実行します。すなわち:
puma -p 8888
# or
iodine -p 8888
P.S.
は、nginxのやApacheなどのWebサーバーは、おそらく仕事に最適なツールであることを...言いました。
ことがなければ、あなたはおそらく暗号化されていないためiodine
(SSLなし)静的ファイルで提供を使用することができます(最初にインストールすることを忘れないでください):
iodine -www ./public
をあなたは、このためのRubyアプリケーションを必要としない、あなたはよ実行するRubyアプリケーションを与えずに、コマンドラインからRubyアプリケーションサーバーを起動するだけです。
それはそれだけで基本的なHTMLですが、レールのアプリカントーではありません。 css、およびjs。彼は、httpサーバを使ってフォルダを提供することを提案しました。私たちはこれをpythonの代わりにrubyを使ってどうやって行うことができますか?上記の例に従ってください。 –
私は上記のコメントから、動的コンテンツと静的コンテンツの違いを知っていることを認識しています。私は私の答えを変えています。コメントの質問に質問を変え、Railsタグを削除してください。 – fbelanger
もしあなたがRailsを必要とせずに動作するPythonソリューションを持っているなら、それにこだわるのはなぜですか? – tadman