2012-02-04 8 views
1

Rails 3.1で2つのアプリケーションを開発しています(間もなくアップグレード予定)、現在の戦略に欠点があることに気付きました。私が現在やっていることは:Windows 7上のRails 3.1でローカルに使用されるアプリケーションの最適な展開方法は?

  • 開発ディレクトリで直接作業してください.Gitでバージョン管理をしてください(私にはうってつけです)。
  • 私は(省略面白くない部分)のようなデータベースを定義している:

    development: 
        database: db/dev.db 
    production: 
        database: db/dev.db 
    
  • 私はポートは3008と3009

  • のように定義されているプロダクションモードですべての時間を、実行中のアプリケーションの両方を持っています
  • 私は時々小さなものを変更し、2つのアプリケーションのうち1つの開発サーバーをデフォルトで直接起動したいと考えています:rails s thin(ポート== 3000)。

以下のことがうまくいかないことに気付きました。

  • CSSまたはJavascriptファイルを変更すると、私はしばしばアセットをクリーンアップ(および開発後に再構築)する必要があります。
  • 開発サーバーは、あるサーバーからファイル(CSSおよびJavascript)を取得し、それを他のサーバーに使用することがあります。キャッシュを手動でクリーンにして、ブラウザを回避する必要があります。

2つのアプリケーションをコンピュータでローカルに並列に開発して使用する方が良い方法はありますか?ヒントやヒントは大歓迎です。それにデプロイメントツール(Capistrano)を使うべきですか?分裂のために私自身のレーキ課題を巻き上げるでしょうか?あるいは、私は傷を癒す魔法のスイッチを見逃していますか?

答えて

1

最後に変更が加えられているので、私自身の質問に答えて、他の人が何かを学ぶことを願っています。開発と生産のための異なるリポジトリと

  • 仕事、でも同じマシン上:終了時に、2つの主要な意思決定(およびいくつかのマイナーなもの)があります。もう1つ(裸のもの)を追加して、2つを同期させます。開発だけからプッシュし、生産から引き出します。
  • アプリケーションごとに異なるポートを使用してください。作るようなスキーム:
    • APPA:DEV ==> 4001、PROD ==> 3001
    • APPB:DEV ==> 4002、PROD ==> 3002
    • ...

ここで行った変更があります。 rails/rootは自分のアプリケーションのルートディレクトリで、全体的なディレクトリ構造は以下の通りです:

rails/ 
    root/ 
    another/ 
    ... 
    bare/ 
    root.git/ 
    another.git/ 
    ... 
    production/ 
    root/ 
    another/ 
    ... 
  • は古いもの、リポジトリとして1、唯一の生産のための他の1から2つの新しいリポジトリを作成します。
    1. mkdir rails/production
    2. mkdir rails/bare
    3. cd rails/bare
    4. git clone ../root --bare
    5. ​​
    6. git remote add bare ../bare/root
    7. cd rails/production
    8. git clone ../bare/root
    9. cd root
    10. git remote add bare ../../bare/root
  • だけであるためには、開発と生産のための1つの(同じ)データベースを使用しないでくださいGitがその魔法を行う。
  • 開発リポジトリで(のみ)開発します。十分にテストした後
  • 、次の操作を行い2つのステップ:と
    1. root> git push bare
    2. root/../production/root> git pull bare
  • スタート開発サーバー(のみ):root> rails s thin -p 4009
  • と本番サーバ(のみ)を持ちます: root/../production/root> rails s thin -e production -p 3009

この結果、もう少し作業があります開発から生産までの変化を踏み出すことができますが、私はいつもそんな小さな刺激を排除します。

0

開発マシンで本番サーバーを稼働させたり、本番マシンで開発したりするのは、めったに推奨されない設定です。ローカルマシンを使用して開発し、開発モードでサーバーを実行し、テストスイートを実行します。 gitへの変更をコミットします。その後、プロダクションモードで稼動しているサーバーに、時間から時間をかけて展開します。それは推奨される設定です。プロダクションサーバーとして、独自のマシン(EC2などのクラウド内にマシンやクラウドなど)を設定し、展開にCapistranoを使用できます。しかし、より単純で問題の少ない、Herokuのようなサービスに展開することができます。あなたがする必要があるのはgit pushで、アプリがデプロイされます。 Herokuの並行処理の1つのインスタンスは無料です。

また、WindowsはRailsサーバーを実行するための非常によくサポートされている環境ではありません。開発のために、Windowsはこのトリックを行うかもしれませんが、あなたは間違いなく少数派です。ほとんどの人はMacまたはLinuxを使用しています。場合によっては、Rails開発用の仮想マシンにWindows上にUbuntu Linuxをインストールすることをお勧めします。

+0

私はWindowsがうまくサポートされていないことは知っていますが、私が使用したいオペレーティングシステムは私の判断ではありません。私はローカルに使用されているアプリケーションだけを別のサーバーに配備する方が良いとは思わない。列車や飛行機で働くのはどうですか?あなたの助言に感謝します。私は今使っています。 – mliebelt

+0

@ mliebelt列車やその他のオフラインの状況で作業する場合は、開発モードでアプリを実行します。あなたはそれのための生産モードを必要としません。また、テスト駆動開発を行うことを検討してください。次に、テストスイートを中心に作業するので、サーバをまったく必要としません。これは業界標準のプラクティスです。コミュニティーの推奨事項や慣習とは異なることを行うには長期的なコストがかかります。プロジェクトの予想寿命に応じて、これは関連している場合とそうでない場合があります。 –

+0

申し訳ありませんが、私は列車で働いていますが、私はアプリケーションを開発するかもしれませんが、私は生産モード、オフラインまたはオンラインで2つのアプリケーションを1日中使用しているため、運用モードで使用できます。私の質問はそれについてはっきりしていなかった、私はアプリケーションの唯一のユーザーであり、それらは一日中(ほとんど)必要とする。 – mliebelt

関連する問題