I'm accustomed to making plugins for Rails 2, and recently updated those
for Rails 3 (minor differences in structure). Spent most of this week
figuring out how to make most of those gems.
One of them I am having trouble with -- this one involves an /app
directory with some helpers and some views. It has worked great as a
Rails2 and even Rails3 plugin. As a gem, I can't seem to get Rails to
see the files in /app.
I've been using jeweler. I don't use git, so I have been manually
specifying files like this:
Jeweler::Tasks.new do |gem|
#....
gem.files.include('app/**/*.rb')
gem.files.include('lib/**/*.rb')
#....
end
That's apparently not enough. The code in the gem works until the main
app hits something needed from the gem's /app folder.
I'm missing something. Googling and trial & error are failing me.
Greg, I have a working example that covers a bunch of gem features, it
might help you:
Keith Schacht – Medium
OK, so to make use of a /app folder, the gem must be an engine.
Keith, I've been using your example (thanks) and about a half dozen
articles, but still running into problems having the contents in the
/app folder get included using this:
Jeweler::Tasks.new do |gem|
#....
gem.files.include('app/**/*.rb')
gem.files.include('lib/**/*.rb')
#....
end
I've converted almost a dozen of my plugins to gems (so I seem to have
that pattern at least emulated well (if not yet fully understood)), and
now need two engines. I have one sort of working. The basics all work,
so I have the engine.rb part worked out, but it is still missing some
/app folder content after I create the gem.
I think I just spotted a pattern. In this line,
gem.files.include('app/**/*.rb')
I am not familiar with /**/ but I'm now seeing that in the /app folder,
a layout like this:
So,
/app
/models
model1.rb
/views
/red_stuff
red1.rb.rb
/blue_stuff
blue1.rb.rb
in my installed gem I see /models but not /views -- and I think that's
because /views doesn't have any .rb files in it.
So, I think the root of the problems I'm seeing is understanding the
files.include() part of jeweler to get what I need (Note: I am not using
git).
Looking at the ruby gems docs, I don't see any examples of files.include
-- so it's still confusing as to which of these settings commands use
gem syntax and which uses jeweler syntax.