この種のことが非常に一般的かどうかはわかりませんが、Rails アプリケーションの単なるラッパーである gem を作成しようとしていることに気づき続けています。
私の gem には を作成するためのジェネレーターがありますconfig.ru
が、Rails アプリケーションは gem の lib ディレクトリ内に存在します。Rails アプリケーションを「埋め込み」、gem 内で実行できるように構成する方法を知る必要があります。
例えば:
$ mygem new project
mygem created a directory called "project" with the following files:
project/config.ru
project/widgets/
project/foobars/
私の gem は、Gem 内にある Rails アプリからそれらのディレクトリ内のコードにアクセスできるように、何らかの方法で Rails に追加する必要があるいくつかのディレクトリも生成します。
あなたが私に与えることができる助けやアドバイスをいただければ幸いです。
明確にするために、私は Rails エンジンや Rails アプリケーションへのプラグインを作成しようとしているわけではありません。本格的な Rails アプリケーションを作成しようとしていますが、それを gem としてパッケージ化して、gem のユーザーが背後で Rails を使用していることを知らなくても gem (rails アプリ) を実行できるようにします。
更新:さて、私は今少し仕事をしています。gem を作成し、gem の lib ディレクトリ内に rails プロジェクトを生成しました。
$ bundle gem my_gem && cd my_gem/lib
$ rails new my_gem --skip-bundle
それは私に残します:
my_gem/
my_gem.gemspec
bin/my_gem
lib/
my_gem.rb
my_gem/
version.rb # generated by bundler
# the rails app:
app/
config/
Gemfile
...etc
このgemにはRailsが必要なので、Rails Gemfileで定義されたgemを依存関係としてgemのGemspecに追加し始めましたがassets
、Gemfileでグループをどのように処理するかについて少し混乱しています。
# Rails Gemfile
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
gem 'therubyracer', :platforms => :ruby
gem 'uglifier', '>= 1.0.3'
end
# gemspec
Gem::Specification.new do |gem|
gem.name = "my_gem"
# ...
gem.add_dependency 'rails', '3.2.8'
gem.add_dependency 'sqlite3'
gem.add_dependency 'jquery-rails'
# how to add the assets group gems?
end