1

最初に少し背景を。

私は開発キャリア全体で MS プラットフォームに取り組んできました。2 週間前まで、私は 98/XP/Vista 以外の OS を起動したことがありませんでした。私はずっと前に VSS を使い始め、約 2 年前に SVN に変更しました。SVN では TortiseSVN を使用し、標準のブランチ/タグ/トランクのセットアップを使用します。

私のプロジェクトも自己完結型です。つまり、新しい開発ボックスに移動し、単一のリポジトリをプルダウンし、VS を開き、F5 を押すと (ほとんどの場合) 実行されます。すべての依存関係はフォルダーに保存されlib、ソース コードはフォルダーに保存されsrcます。

新しいことを学ぶために、Ruby on Rails アプリケーションを構築することに決め、Ubuntu ベースの開発マシンを作成しました。私は SVN サーバーを稼働させており、このプロジェクトで別の人と作業しています。彼はたまたま開発マシンに Mac を使用しています。

そして今、問題のために。

Ruby、Rails、および使用しているすべてのプラグインのさまざまなバージョンを管理する方法に苦労しているようです。また、UbuntuでSVNを使用するのに苦労しているようです。

つまり、Ubuntu には Ruby がプリインストールされています。バージョン1.8.5だと言いたいです。いずれにせよ、使用しているプラ​​グイン (Community Engine) 用にインストールする gem がたくさんありました。*nix は初めてなのでsudo、インストール時に使用せず、あらゆる種類の問題に遭遇しました。最終的にRubyを完全に吹き飛ばし、新たに始めました。それはうまくいったようです。

問題は、私が自分のコードをコミットした後、他の人が最新の状態になった後、gem をインストールするプロセス全体を実行する必要があることです。

RoR アプリケーションで gem とプラグインを管理するためのベスト プラクティスは何ですか? 無数のファイルが SVN に追加されてもかまいません。ディスク容量とネットワーク帯域幅は安価です。これを正しく行う方法がわかりません。

それではSVNへ。

RapidSVN をインストールしましたが、フォルダーがロックされるという問題が頻繁に発生します。数回、自分の間違いに気づきましたが、他の人は理由がわかりませんでした。しかし、どちらのシナリオでも、修正できませんでした。私は自分のコードのバックアップを作成し、新しい作業コピーをプルダウンしてから、手動で変更を移動し、プロジェクトにコミットするときに少し賢くなりました。

実際に昨夜少し RTFM を行ったところ、リポジトリのブックマークを作成し、そのブックマークから「作業コピーをチェックアウト」する必要があることがわかりました。理由はわかりませんが、説明書にはそう書いてあります...

Ubuntu の RoR プロジェクトで SVN を使用するためのベスト プラクティスは何ですか?

私は文字通り、これに関する段階的なプロセスを探しています。

編集 言及するのを忘れていましたが、私は IDE に NetBeans を使用していますが、もしあれば、どのような SVN サポートがあるかは調べていません。RubyMine を見て、ぜひ使いたいのですが、今のところ不安定すぎるようです。

4

4 に答える 4

4

プラグインについては、ベンダー フォルダに貼り付けて、自分でコードを記述したかのように SVN に追加することを個人的にお勧めします。Piston も優れたソリューションでしたが、すべての一般的なプラグインが github に移行し始めたときに切り替えました (それ以来、piston は信頼できませんでした)。

gem の場合は、Rails 2 以降を使用してください。config/environment.rbを使用して必要な宝石をリストする必要がありますconfig.gemここにその機能に関する一連の情報があります

これが意味することは、新しい gem を追加すると、次に同僚が更新したときに、必要な gem を取得するまで、彼の Rails アプリは起動しないということです。その後、彼は次を使用してワンステップでそれらをインストールできますsudo rake gems:install

これをさらに一歩進めると、gem を vendor ディレクトリに置くことができます。これは、一般に「ベンダーのすべて」として知られています。environment.rbこれを行う最も簡単な方法は、上記のように使用するすべての gem をリストしてから、 を実行することrake gems:unpackです。ただし、このアプローチには 2 つの問題があるため、私は自分で使用しないことを好みます。

  1. 10 個のアプリがあり、それぞれが gem を販売している場合、一般的な gem のコピーを 10 個保持することになり、すべてのサイトの更新が大幅に遅くなります。
    これはあなたにとって問題ではないかもしれませんし、我慢する価値があるかもしれません。それは単なる個人的な好みです。

  2. 一部の gem (mongrel や hpricot など) には、C で記述されたネイティブ拡張機能があります。これは、それらをインストールすると、.cソース コードがダウンロードされ、gcc実行されてシステム用に特別にコンパイルされることを意味します。
    ネイティブ C 拡張機能を ubuntu にインストールしてから vendor フォルダーに配置し、後でそれを OS X (または別のバージョンの ubuntu) で実行しようとすると、Ruby プロセスがクラッシュしてアプリが表示される可能性が高くなります。下。
    すべての gem が純ルビーである場合、これは問題ではありませんが、注意が必要です。

于 2008-11-12T20:24:16.333 に答える
1

多くの人は、ピストンまたはデザートを使用してプラグインを管理し、Gem を Rail ローカル ベンダー フォルダー (SVN に保存) にインストールします。

http://www.rubyinside.com/advent2006/12-piston.html http://pivotallabs.com/users/brian/blog/articles/459-build-your-own-rails-plugin-platform-with-desert

また、geminstaller を使用することをお勧めします。これは、同じ gem とそれらの同じバージョンの両方をインストールするのに役立ちます。

http://geminstaller.rubyforge.org/

私はコマンド ラインから SVN を使用しますが、TortiseSVN に慣れている場合は、RadRails や NetBeans のように SVN が適切に統合された IDE を試してみてください。IDE には Tortise に似た非常によく似たグラフィカルな SVN マネージャーがあります。コマンド ラインで作業したい場合は、10 分間の簡単な SVN チュートリアルを見つけるだけで十分です。

ラピッド SVN については聞いたことがなく、通常の SVN ツールは常に私と一緒に検索するだけで機能し、フォルダーのロックの問題はほとんど発生しませんでした。

于 2008-11-12T18:08:28.463 に答える
0

まず、コマンドラインからsvnを見つけます。svn-bookはオンラインです。svnstatusまたはsvncommit-m"blah"を実行するのはそれほど難しくありません。ほとんどの問題は、OS機能を使用してファイルを削除または名前変更する場合に発生します。そのためにsvnコマンドを使用します。

次に、rapidsvnが機能しない場合は、svn-workbenchを試してください。言うのは嫌ですが、私が見たlinuxsvnGUIツールはどれもtortoisesvnほど優れていません。

プラグインとsvnが問題です。私は使っていませんが、それを取り除くことを目的としたピストンと呼ばれるツールがあります。プラグインをvendor/pluginsディレクトリにチェックアウトします。本当に必要な新しいバージョンが出てきたら、信頼できるupdate_pluginbashスクリプトを使用してプラグインを更新します。

#!/bin/bash

#  reinstall the plugin in an svn friendly way
plugin="some_plugin"
plugin_url="http://some_server/some_plugin/trunk"

for f in site1 site2 site3
do
  echo $f
  cd ~/rails/$f

  svn delete vendor/plugins/$plugin
  rm -rf vendor/plugins/$plugin
  svn -m "remove $plugin" commit
  script/plugin install $plugin_url
  svn add vendor/plugins/$plugin
  svn -m "add $plugin" commit

done
于 2008-11-17T18:53:25.650 に答える
0

Orion は、別の OS 間で共有する場合、ベンダー提供された gem を再構築する必要があると述べました。gems:build rake タスクを使用して、それらを自動的に再構築できます。

于 2008-11-13T10:32:21.397 に答える