1

私は Play 2.1.3 Web アプリを作成しており、Heroku で 2 つの環境 (1 つは本番用、もう 1 つはステージング用) をセットアップしました。

2 つの環境を区別する最も簡単な方法は何ですか? たとえば、検索ロボットにステージング アプリのインデックスを作成させたくないので、ステージング用に を追加したいのですrobots.txtが、リポジトリをプッシュするときに本番用にも追加されます。

私のコンピューターには、別々の git リポジトリーを持つ 2 つのローカル (app-prodおよび) Play アプリケーションが必要ですか? app-staging次に、2 つのアプリケーションの同期を維持する必要があります。Heroku のステージング アプリが正常に動作することを確認したら、それらの変更をコンピューター上のローカルの本番アプリと同期し (Git でどのように行うのですか?)、それらの変更を Heroku の本番アプリにプッシュする必要があります。

4

2 に答える 2

1

404 または実際のアセットを返す robots.txt というルートを作成できます。アプリケーションの動作を変更するために、さまざまな環境に設定する環境変数から順番に読み取る application.conf を調べることができます。

編集:

私は自分の解決策をよりよく説明するべきでした。コントローラを作成して、いくつかのマイナー ロジックを持たせることができます。ここで、404 または実際の robots.txt ファイルを返すためのロジックを指定する必要があります。

package controllers

import java.io.File
import play.api.mvc._

object Robots {

  def get = Action {
    Ok.sendFile(
      content = new File("/path/to/your/robots.txt"),
      fileName = _ => "robots.txt"
    )
  }
}

ファイルの提供に関するドキュメントは、http ://www.playframework.com/documentation/2.2.x/ScalaStream にあります。

そして、ルートファイルには

GET /robots.txt   controllers.Robots.get

これは、アセット コントローラーよりも優先度が高くなります。

于 2013-09-06T22:14:04.407 に答える
1

私は Play に詳しくありませんが、私のアプリケーションでは、ステージングのために基本認証プロンプトを使用しているため、作業中やインデックス作成中は何も表示されないことがわかっています。

より伝統的な git フローを使用する場合は、2 つの Heroku アプリケーションを用意し、対応するブランチを使用して 1 つの git リポジトリからそれらにデプロイするのが最適です。リポジトリを Heroku に接続するときに、リモートに次のような名前を付けるproductionstaging、区別しやすくなります。押すとき。(ここまでは見慣れているでしょうgit push heroku master

例えば

git remote add production <git url of production heroku app>
git remote add staging <git url of staging heroku app>

次に、展開プロセスは次のようになります。

  • git push staging staging:master- ローカル ステージング ブランチをstagingリモート マスター ブランチにデプロイする
  • ステージング Heroku アプリで検証
  • git checkout master- ローカル マスター ブランチに切り替える
  • git merge staging- ステージングをローカル マスターにマージする
  • git push production master- ローカル マスターをproductionリモートにデプロイする

Heroku は最近、Pipelines と呼ばれる新機能も導入しまし

于 2013-09-07T07:20:32.297 に答える