2011-08-04 9 views
5

私は現在、私の最初のルビーの宝石を開発しようとしています。私はすでに詰まっています。私は基本的な構造を作成し、いくつかのチュートリアルを読むために "バンドルの宝石"コマンドを使用しましたが、私はActiveRecordをどのように統合するか見当たりません。Ruby Gem Development - ActiveRecordの使い方は?

マイグレーションはどこで作成しますか?

libフォルダ内またはルートに "db/migrations"フォルダを作成しますか?

そして私はRakefileで何もする必要はあります(私は答えは「あなたがあなた自身の[my_gem]作成する必要があります:デシベル:移行」のようなものだったいくつかの質問を発見した。またはそのような何かを)

私が必要とするのは、レール・アプリケーションで使用できるActiveRecordモデル(もちろん移行を含む)を定義する宝石を作成する方法です。

これについてのお手伝いがありますようお願い申し上げます。

挨拶、フロ

答えて

6

レールプロジェクトと統合するための宝石を構築するときには、レールティーンエンジンを構築する必要があります。あなたはレールの3.0.xのを使用している場合は、enginexを使用し、あなたがレールに3.1を使用している場合は、新しい発電機を使用する必要があります。

rails g plugin new your-plugin-name 

次に、あなたの宝石の内側に、あなただけのapp/models/フォルダ内に、モデルを定義することができますし、自動的にピックアップされます。

マイグレーションはやや難しく、レール3.1の場合は正しいフォルダに定義しても問題ありません。レール3.0ではマイグレーションをコードベースにコピーするタスクを手動で生成する必要があります。私がその質問に答えたところのthis linkをチェックしてください。

レールエンジンの詳細については、thisthis articleを確認してください。

+3

この投稿は誤解を招くものであり、アクティブなレコードモデルと宝石からの移行の使用について質問しています。これを行うにはRailsを使う必要はありません。私はgem-ifyにしたいsinatraベースのWebサービスを持っているので、すべての設定をサービスgemパッケージの外部に示すことができます。これは、レールが動かないと仮定した場合の多くの代替シナリオの1つの例に過ぎません。 – johnmartirano

+0

質問では、それは明らかに宝石は、レールアプリで使用できるモデルを定義する必要があります。 – nathanvda

+1

"Can"は "must"とは異なります。営業担当者はRailsだけに興味があったかもしれませんが、他の人が来て、これを読んでいる人は、例えばRailsとSinatraの両方で動作する宝石に興味があるかもしれません。 –

3

のActiveRecordの機能をすることによって行うことができ取得:これは動作するはず

require "rubygems" 
require "active_record" 

class User < ActiveRecord::Base 

end 

+0

このプロジェクトをご覧ください。これは小さなActiveRecord拡張です:https://github.com/phoet/scoped_validations – phoet

+0

@phoetこのリンクはもう機能しません。 –