I read a few documents on these arguments, but I did not understand clearly what they are, what are the differences between them and if one of them fits my needs.
I need to write a piece of application which can be plugged in other application and I want to include it in other applications as a gem. Essentially I need a couple of models, one controller and no views, plus some initialization, support for configuration parameters coming from the hosting app and a generator.
Am I on the right way?
What should I read to understand how to do that?
Update:
A very nice article with a lot af details can be found here.
Essentially:
Railtie is the core of the Rails Framework and provides several hooks to extend Rails and/or modify the initialization process.
A Rails::Engine is nothing more than a Railtie with some initializers already set. And since Rails::Application and Rails::Plugin are engines, the same configuration described here can be used in all three.
Railtie can probably do what you describe, but it may be more desirable to use an engine. The engine can have its own configuration and also acts like a Rails application, since it allows you to include the /app directory with controllers, views and models in the same manner as a regular Rails app.