0

Sinatra を使用して「Hello, World」アプリを作成し、Heroku にプッシュすると、すべて機能しました。

それ以来、基本的な Jekyll ブログを作成し、次のルートを使用して Heroku 経由でアクセスしようとしています。

get '/?' do
file.read("_site/index.html")
end

get '/.*.*' do
file.read("_site/#{params[:splat]}")
end

not_found do
file.read("_site/error/index.html")
end

インデックスへのルートは私のサイトへのリンクでうまく機能 しますが、最初の投稿をクリックするとすぐに失敗します。

:splatとのさまざまなルートの非常に多くのバリエーションを試しましたが、getうまくいかないようですか? 何か案は?

4

1 に答える 1

0

失敗しているルートで、file.readステートメントの前に and を追加するwarn "splat = #{params[:splat]}"と、結果がターミナルに出力され、実際に取得しているものを確認できます。

get '/.*.*' do
  warn "splat = #{params[:splat]}"
  file.read("_site/#{params[:splat]}")
end

ファイルへの絶対パスを使用することもできますが、インデックス ページを取得している場合は不要であることが示唆されます。

config do
  set :statics, File.expand_path(File.join(settings.root, "_site"))
end

get '/.*.*' do
  file.read( File.join settings.statics, params[:splat] )
end

Sinatra のルートを使用する予定が他にない限り、おそらく Sinatra ルートを完全に削除して、「_site」フォルダーを public_folder にするだけで、Sinatra が静的ファイルの提供を行います

config do
  set :public_folder, File.expand_path(File.join(settings.root, "_site"))
end

# no more to do...
于 2013-11-08T13:13:31.540 に答える