wagons 0.4.8 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.rdoc +22 -23
- data/Rakefile +10 -1
- data/lib/tasks/wagons.rake +11 -3
- data/lib/wagons/extensions/application.rb +2 -1
- data/lib/wagons/extensions/migration.rb +18 -5
- data/lib/wagons/extensions/require_optional.rb +1 -1
- data/lib/wagons/version.rb +1 -1
- data/lib/wagons/wagon.rb +15 -5
- data/test/ci/{rails32.gemfile → rails42.gemfile} +2 -1
- data/test/ci/rails42.gemfile.lock +127 -0
- data/test/ci/{rails40.gemfile → rails50.gemfile} +2 -1
- data/test/ci/rails50.gemfile.lock +134 -0
- data/test/dummy/Gemfile +3 -0
- data/test/dummy/Gemfile.lock +121 -95
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/migrate/20120606125104_create_people.rb +2 -1
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/development.log +1751 -1400
- data/test/dummy/log/test.log +21032 -40895
- data/test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
- data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/3O/3Ozj42ApBuxlOFClnLVzPTVANpal8rRTgimRskqSu9A.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/5W/5WPVRZEWijO8sFv_O-ybW9H-kPX4jTLA4TtBOPOHZHY.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/5X/5X8IJB_AePrJJ7-ivQe6Yx-9yVIbWIUJC09sn8gks4Q.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/7-/7-7HtSWxaVCNztU-cQOVQrmV8cwfTWN3P7Nn1N4zLl8.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/9A/9Ac7xpxkR5dsc26NWay0KUhoujg2SWVdUUt7fy2jVmY.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/9h/9h_QDxrjvEr932ffxkSXmueH8Tu6UklyqXTNpJodMYs.cache +0 -0
- data/test/dummy/tmp/cache/assets/{test/sprockets/v3.0/Fw9pwnM3h_BU06vzbayrirtvOPvafBpDntUrVWweiJU.cache → sprockets/v3.0/Aw/Aw-GclqWrASyDZSt9V30TCC54ya0oOtqJ1LfYA6BHvo.cache} +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/Bb/BblMwl-MfVx0NRaTrU_z4bB5ThvZmtL_td9c5J0rgvk.cache +1 -0
- data/test/dummy/tmp/cache/assets/{test/sprockets/v3.0/N5F3Vj7Q0Rnf4yF3FuckBe127oo5Tlkxs0m_gFEz6ic.cache → sprockets/v3.0/CD/CDHhnf8bkBWd8u0KBaP9gj19-N1X3PEgOnLoSRs9BV4.cache} +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/D7/D7oB91vLIuIoXc3ze5hI3FZ2Azs-y2rR5pn1CqjIhFA.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/Db/DbmLC3wtG7ztEvkzmVAubW8vf37XdD0bT3Kh73oed1A.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/Dj/DjkHbsFWfFxtOZDqBBBEpBoTBHnf0HmmzyyuC494kTA.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/EG/EGkthgx-3ERWu46T56D_TqB-C7MGNJfssrSACFRieiY.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/EU/EUOMl2HxcsTkkg-UHgKplu6l1Au78s8-lO6FtuSHeGM.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/Ek/EkvEjR75Ft3eI70y5FqqVZ2oFzgz2qYhcI8pE1Gi2Gs.cache +1 -0
- data/test/dummy/tmp/cache/assets/{test/sprockets/v3.0/J17-1cw4l8J1sJphj0egt3Or377G81YyXyN5bPYYa-s.cache → sprockets/v3.0/IY/IYA0wigyrlL1DR6nSvOL0gdfU5RMPrHjgyrFuZr3afQ.cache} +0 -0
- data/test/dummy/tmp/cache/assets/{test/sprockets/v3.0/2lwT75Cg7x5Vd67ZbwVQvC4kTNZFdEQ6kto1rMNLUDw.cache → sprockets/v3.0/K4/K4rNS0j9bLKG6ti_i3DYpV0_TH3Lvb4PLfT8vjqiQFQ.cache} +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/Tg/TgTcVvqf5KTGti25aDSVdPzdEFSzFCA7TIgv36nVcSw.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/UA/UAXjZVRyzvA00I4VRwLgJlGYuhHv-JLQPorF9L84a0M.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/Vd/VdB3rRyqaY-iuOEWJV9Uehypi9JZAGBx5zZqDGJlJ20.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/X3/X3m0ICdQsAzAjT__yuU_b7JmB5XR3Q9je_4Jz8pq7V8.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/ZP/ZPBWrOLDOu-NpS--iHhBJvOJCAB_8RSFHk8uVEu-FhQ.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/aR/aRHoU0w2GWt4Ed-_Fd4LcznUXPpuh5UkZgpTuH4gtFE.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/af/afFutPcjXtaGD8YXvbW166-XZwPm1npBJiwynk9zcx4.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/b5/b5XAYmcWnIrTHCYZOsIhoOzChIUkyDjE83FS__vxBPA.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/b7/b7lBpkBxQaCxHBBRf-QF0CiQKnRE8kYGLUzgAPTjf_k.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/bk/bk7kxHlQj_KqeERAr_oZmXi1dL8ExD0kE_8zqRblRZU.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/ga/ga3GH-sLwI6OFNGwKt6aRfATJ22Hb5V9fwDnIIVfMAw.cache +0 -0
- data/test/dummy/tmp/cache/assets/{test/sprockets/v3.0/Ju_Em909fs1FMMXDugQpdPt2CMvXMDc6525ONXahQMA.cache → sprockets/v3.0/hF/hFagey905AkQKzK-LgKZYz5uwkRfZlbFneB5sfyatVY.cache} +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/l_/l_tJ9WwBL9Q8XjxQN56nGuGtCrP7kGBvE8e76g8tRC0.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/le/leHzMzAXsEKyvlJmOgHaYZ-LZscYXOrZ1iyhcZZpAnQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/lg/lgbAXqTVV0csF3CIFI-LOii9PZgGNIt2bkma5Kr6H9s.cache +1 -0
- data/test/dummy/tmp/cache/assets/{test/sprockets/v3.0/1N0pl9TchBaOQaF0AhTeP9aBkz8wt6q_3m0RgBkDhgM.cache → sprockets/v3.0/oK/oKdQTNFghQL76Znos_5Gl3zKlJvXmlVGyjG94JGm9fE.cache} +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/qf/qfAcVVR58gpd7pbe9fsHRvbhUBNzQiliZc_5-L3jzAs.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/r1/r134k3FIZRxf-MmM1f9AtnHuazK-sDzIauS290hG88U.cache +0 -0
- data/test/dummy/tmp/cache/assets/{test/sprockets/v3.0/9nyywgMCbjp3eG-6Of9h7utciGQIfxrBzGQ0-an_sbw.cache → sprockets/v3.0/r2/r2_nJSrpIqAYxlSHNCf7WM3S0Wd4wJFZtygBkx2-bFQ.cache} +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/ts/tsjGobLze0DF5HAz7vSBSTkY70PKcceQmRDq2LCagDM.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/w8/w88Enmk002DS__R9VXL3zF4wYSM2ZY7WSPEhEAl9_bQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/xA/xA6u7RVgjpfnN-LOSPa64Jy_vOtlVpYU5KhC97sh8js.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v3.0/yQ/yQaMtLns38LF8M5TPwGJjY13IqTjGFTtvUM8dl_OLhs.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/test/dummy/vendor/wagons/superliner/Gemfile.lock +116 -90
- data/test/dummy/vendor/wagons/superliner/db/migrate/20120606125058_create_cities.rb +2 -1
- data/test/dummy/vendor/wagons/superliner/test/controllers/people_controller_test.rb +6 -6
- data/test/wagons_installer_test.rb +18 -18
- metadata +171 -143
- data/test/ci/rails32.gemfile.lock +0 -108
- data/test/ci/rails40.gemfile.lock +0 -101
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/8KMSB4nULx3HD4OIvwhzZl0WGf7xAUtFneCeyIXuZmM.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/A8jDhJxSHDAuo_zFvLiqtHV1q85gikrZIflYohzOGYQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/DbmLC3wtG7ztEvkzmVAubW8vf37XdD0bT3Kh73oed1A.cache +0 -2
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/DxStlU_WNi_56hoHpYamDxaV_MrDbLLfwWUHPD6pBOY.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/GDkqmAIbFW1xtiIWw3goyQZZ-lyGtj2AN4USqOjypu0.cache +0 -3
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/HHh-VH_N4dbzT_z1SG0Q_9DfE_t-uUYY19gWI66mw5A.cache +0 -3
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/IJamKeUVR7OeXqDs0_7085gJwwheZ1nBh693j3oZYRs.cache +0 -2
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/IgzTqUXqni79z21VpjTJTXo-3NDS71UnIWt33_B7trk.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/KPXhN4fOVXSTJHCN65wHc7uZfC6sjYt8DlXdJ7rSNyk.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/M6CLZDog67Unvr3QX-4aePu9nSfzQ5a81IbTRqrBZuE.cache +0 -2
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Qh-PTAy0TWtEDwCfYSzUJDJSj8JKM3I1TI9ROTVOCx0.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Rbwsp3nlV3YlAGjcRaZCI66GW-NTiPeftUul2HhSVN0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/TgTcVvqf5KTGti25aDSVdPzdEFSzFCA7TIgv36nVcSw.cache +0 -3
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/V5f0ylSlfsr_kU3dCzY7myOLB6Ta8d1oEfTxFnYSngc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/W_kV5jdSA0o0ax0Qx8x_uZ7DnEaA5iPzsPCyUrog7c4.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/b7lBpkBxQaCxHBBRf-QF0CiQKnRE8kYGLUzgAPTjf_k.cache +0 -3
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ewpJ8lPdGhtzlEL7X_FnafKY7Md-EjYoWicLlhGoDW4.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/fFhUtKUnI1qwA2ci6aNshI6k45g1zeJNK4fKJwUwf-4.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/kM91Vu2ioELErj7VdB8xXpKEh2IVT0-0fqyWswvw75o.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/l_tJ9WwBL9Q8XjxQN56nGuGtCrP7kGBvE8e76g8tRC0.cache +0 -2
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/nYsiXzpgr13IN7stPoSJb4D8Kpya2liQkKBIUZ3Yb-Q.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/q1BFcF4m7Fh2TqwEZioRz5opSgGQGEbr_UWQIDs442U.cache +0 -1
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/tWU60Um-QUw6vr_POtxrJDo8OCEZgFF5TsQWkTZdOQA.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/umHl2-IS9hns60Oq24M_KecepNV1A1wVPxwQwv9B30o.cache +0 -2
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/yvHPdWsvfKDfou_ZskLF6Cv5uc2W-xuCt7byJblOeRU.cache +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 77ad6e032983bebf58125a39ac88e3979933ce023f4d764de8f4c5e0481a7408
|
4
|
+
data.tar.gz: 9d43e8b0c92ea4eecb432a5ffba1c4b975e59af87e8b0a9147337c33747a2ec8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d5fd33f45e525195cd60b3ad0cadc279801400f2c9ea7698cf57a2652015d74aabd8519e9c800374483127c9e4978258964229472676241a83c51447e5832e6
|
7
|
+
data.tar.gz: 874710b14255e36237d347c279317c29e0245d82247b1cc3c5fff080781d97e544d8e32bf5ec5cd40d87d3423c0870592117eb99aa4310c0533b2070647e1a1a
|
data/README.rdoc
CHANGED
@@ -1,11 +1,13 @@
|
|
1
1
|
= Here Be Wagons
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
{<img src="https://secure.travis-ci.org/codez/wagons.png" />}[http://travis-ci.org/codez/wagons]
|
4
|
+
|
5
|
+
Wagons are extensions to your application train running on Rails. You can see them as plugins that
|
6
|
+
extend the behavior of your specific Rails application. This framework makes it easy to create and
|
5
7
|
manage them.
|
6
8
|
|
7
|
-
First of all, wagons are basically {Rails Engines}[http://api.rubyonrails.org/classes/Rails/Engine.html],
|
8
|
-
so make sure you are familiar with them. Wagons provide a handful of additions so your wagon
|
9
|
+
First of all, wagons are basically {Rails Engines}[http://api.rubyonrails.org/classes/Rails/Engine.html],
|
10
|
+
so make sure you are familiar with them. Wagons provide a handful of additions so your wagon
|
9
11
|
engines actually know your application.
|
10
12
|
|
11
13
|
Wagons differ from engines in a few points:
|
@@ -28,15 +30,15 @@ This creates the structure of your wagon in <tt>vendor/wagons/[name]</tt>. In th
|
|
28
30
|
which defines the <tt>Rails::Engine</tt> and includes the +Wagon+ module. Here, you may also extend your application
|
29
31
|
classes in a +config.to_prepare+ block.
|
30
32
|
|
31
|
-
In order to load wagons with the application, an entry in the +Gemfile+ would be sufficient.
|
33
|
+
In order to load wagons with the application, an entry in the +Gemfile+ would be sufficient.
|
32
34
|
To keep things flexible, wagons come with an additional file +Wagonfile+. Generate one for development purposes with:
|
33
35
|
|
34
36
|
rake wagon:file
|
35
37
|
|
36
|
-
This will include all wagons found in +vendor/wagons+ in development mode.
|
38
|
+
This will include all wagons found in +vendor/wagons+ in development mode.
|
37
39
|
Do not check +Wagonfile+ into source control. In your deployments, you might want to have different entries in there.
|
38
40
|
|
39
|
-
Once your wagon is ready to ship, a gem can be built with <tt>rake build</tt>. The name of a wagon gem must always start
|
41
|
+
Once your wagon is ready to ship, a gem can be built with <tt>rake build</tt>. The name of a wagon gem must always start
|
40
42
|
with the application name, followed with an underscore and the actual name of the wagon. In production, you may
|
41
43
|
simply install the wagon gem and explicitly add a declaration to your +Wagonfile+.
|
42
44
|
|
@@ -54,7 +56,7 @@ Ruby and Rails provide all the magic required to extend your application from wi
|
|
54
56
|
|
55
57
|
To add new models, controllers or views, simply create them in the +app+ directory of your wagon, as you would in a regular engine.
|
56
58
|
|
57
|
-
To extend existing models and controllers, you may create modules with the required functionality.
|
59
|
+
To extend existing models and controllers, you may create modules with the required functionality.
|
58
60
|
Include them into your application classes in a +config.to_prepare+ block in <tt>lib/[wagon_name]/wagon.rb</tt>.
|
59
61
|
|
60
62
|
To extend views, wagons provides a simple view helper that looks for partials in all view paths. Any template that
|
@@ -68,7 +70,7 @@ Any partials living in an equally named subfolder as the calling template and st
|
|
68
70
|
== Wagon dependencies
|
69
71
|
|
70
72
|
Wagons may depend on each other and/or have certain requirements on their load order. To make sure something
|
71
|
-
is loaded before the current wagon, add a <tt>require '[app_name]_[other_wagon]'</tt> on top of the
|
73
|
+
is loaded before the current wagon, add a <tt>require '[app_name]_[other_wagon]'</tt> on top of the
|
72
74
|
<tt>lib/[app_name]_[current_wagon].rb</tt> file. For development dependencies, there is an extra +require_optional+
|
73
75
|
method that will not raise a +LoadError+ if the dependency is not found.
|
74
76
|
|
@@ -90,7 +92,7 @@ The syntax follows the Ruby gem version and requirements.
|
|
90
92
|
Wagons integrates {Seed Fu}[https://github.com/mbleigh/seed-fu] for seed data. All seed data from the application
|
91
93
|
is also available in wagon tests, as long as no fixture files overwrite the corresponding tables.
|
92
94
|
|
93
|
-
Wagons may come with their own seed data as well. Simply put it into <tt>db/fixtures[/environment]</tt>. To allow for
|
95
|
+
Wagons may come with their own seed data as well. Simply put it into <tt>db/fixtures[/environment]</tt>. To allow for
|
94
96
|
an automatic removal of wagons, {Seed Fu-ndo}[https://github.com/codez/seed-fu-ndo] is able to record
|
95
97
|
seed file instructions and destroy all entries that exist in the database. Just make sure that you only use
|
96
98
|
the +seed+ and +seed_once+ methods in these files, or the unseed may not work correctly.
|
@@ -102,24 +104,24 @@ There are a few other things that work differently with wagons:
|
|
102
104
|
|
103
105
|
=== Schema & Migrations
|
104
106
|
|
105
|
-
Wagons are extensions to your application that may vary between various installations. Wagon tables are added
|
106
|
-
and removed as wagons are installed or uninstalled. After you have added a wagon's gem to your production
|
107
|
-
+Wagonfile+, run <tt>rake wagon:setup</tt> to run the migrations and load the seed data. Before you remove them
|
107
|
+
Wagons are extensions to your application that may vary between various installations. Wagon tables are added
|
108
|
+
and removed as wagons are installed or uninstalled. After you have added a wagon's gem to your production
|
109
|
+
+Wagonfile+, run <tt>rake wagon:setup</tt> to run the migrations and load the seed data. Before you remove them
|
108
110
|
from +Wagonfile+, run <tt>rake wagon:remove WAGON=to_remove</tt> to eliminate the artifacts from the database first.
|
109
111
|
|
110
|
-
In this way, the +schema.rb+ file must only contain the tables of the application, not of all wagons.
|
111
|
-
When you have migrations for your main application and wagons loaded, the schema will not be dumped on
|
112
|
+
In this way, the +schema.rb+ file must only contain the tables of the application, not of all wagons.
|
113
|
+
When you have migrations for your main application and wagons loaded, the schema will not be dumped on
|
112
114
|
<tt>db:migrate</tt>. You need to either remove the wagons or reset the database before the schema may be dumped.
|
113
115
|
This is (currently) the cost for having arbitrary pluggable application extensions.
|
114
116
|
|
115
117
|
=== Tests
|
116
118
|
|
117
119
|
Wagons use your application for tests. This is also true for your application's test database. To get the
|
118
|
-
correct setup, <tt>app:db:test:prepare</tt> is extended to run the migration of the current wagon and all its
|
120
|
+
correct setup, <tt>app:db:test:prepare</tt> is extended to run the migration of the current wagon and all its
|
119
121
|
dependencies, as well as their seed data. Once the database is set up, single tests may be run with
|
120
122
|
the usual <tt>ruby -I test test/my_test.rb</tt> command.
|
121
123
|
|
122
|
-
The +test_helper.rb+ of the main application is included in all wagon tests. Any additions in
|
124
|
+
The +test_helper.rb+ of the main application is included in all wagon tests. Any additions in
|
123
125
|
this file are available in wagon tests as well. The only thing wagons need to do is reseting the
|
124
126
|
fixture path to the wagon's test fixtures.
|
125
127
|
|
@@ -136,12 +138,9 @@ the same as for the application. <tt>rake wagon:bundle:update</tt> is here to he
|
|
136
138
|
We recommend to NOT check in the Wagon's <tt>Gemfile.lock</tt> file into source control.
|
137
139
|
|
138
140
|
Unfortunately, adding wagon gems to the +Wagonfile+ in production also breaks with Bundler's approach
|
139
|
-
of locking down application gems. Because of that, the <tt>--deployment</tt> option cannot be used
|
141
|
+
of locking down application gems. Because of that, the <tt>--deployment</tt> option cannot be used
|
140
142
|
with wagons. If you install your gems from <tt>vendor/cache</tt> into <tt>vendor/bundle</tt> or so,
|
141
|
-
you still get most of the benefits of using Bundler, including the guarantee for the very same gem
|
143
|
+
you still get most of the benefits of using Bundler, including the guarantee for the very same gem
|
142
144
|
versions as used in development.
|
143
145
|
|
144
|
-
Contributions to this or any other issues are very welcome.
|
145
|
-
|
146
|
-
|
147
|
-
{<img src="https://secure.travis-ci.org/codez/wagons.png" />}[http://travis-ci.org/codez/wagons]
|
146
|
+
Contributions to this or any other issues are very welcome.
|
data/Rakefile
CHANGED
@@ -38,7 +38,16 @@ task :test => :set_rails_version do
|
|
38
38
|
|
39
39
|
begin
|
40
40
|
in_dummy 'rm -rf Gemfile.lock'
|
41
|
-
|
41
|
+
if ENV['ROOT_BUNDLE_PATH'] # used by travis-ci
|
42
|
+
in_dummy 'mkdir -p .bundle'
|
43
|
+
in_dummy 'echo "---\nBUNDLE_PATH: \"$ROOT_BUNDLE_PATH\"\n" > .bundle/config'
|
44
|
+
in_dummy 'cat .bundle/config'
|
45
|
+
in_dummy 'mkdir -p vendor/wagons/test_wagon/.bundle'
|
46
|
+
in_dummy 'echo -e "---\nBUNDLE_PATH: \"$ROOT_BUNDLE_PATH\"\n" > vendor/wagons/test_wagon/.bundle/config'
|
47
|
+
in_dummy 'mkdir -p vendor/wagons/superliner/.bundle'
|
48
|
+
in_dummy 'echo -e "---\nBUNDLE_PATH: \"$ROOT_BUNDLE_PATH\"\n" > vendor/wagons/superliner/.bundle/config'
|
49
|
+
end
|
50
|
+
in_dummy 'bundle exec rails g wagon test_wagon'
|
42
51
|
in_dummy 'bundle exec rake wagon:bundle:update'
|
43
52
|
in_dummy "bundle exec rake db:migrate test #{'-t' if Rake.application.options.trace}"
|
44
53
|
in_dummy "bundle exec rake wagon:test #{'-t' if Rake.application.options.trace}"
|
data/lib/tasks/wagons.rake
CHANGED
@@ -180,9 +180,17 @@ namespace :db do
|
|
180
180
|
Rake::Task[:'db:_dump'].clear_actions
|
181
181
|
|
182
182
|
task :_dump do
|
183
|
-
|
184
|
-
|
185
|
-
|
183
|
+
wagon_migrations =
|
184
|
+
if defined?(ActiveRecord::MigrationContext)
|
185
|
+
context = ActiveRecord::MigrationContext.new(ActiveRecord::Migrator.migrations_paths)
|
186
|
+
migrated = Set.new(context.get_all_versions)
|
187
|
+
migrated.size > context.migrations.size
|
188
|
+
else
|
189
|
+
migrations = ActiveRecord::Migrator.migrations(ActiveRecord::Migrator.migrations_paths)
|
190
|
+
migrated = Set.new(ActiveRecord::Migrator.get_all_versions)
|
191
|
+
migrated.size > migrations.size
|
192
|
+
end
|
193
|
+
if wagon_migrations
|
186
194
|
puts "The database schema will not be dumped when there are loaded wagon migrations."
|
187
195
|
puts "To dump the application schema, please 'rake wagon:remove WAGON=ALL' wagons beforehand or reset the database."
|
188
196
|
else
|
@@ -13,7 +13,8 @@ module ActiveRecord
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
16
|
-
|
16
|
+
alias maintain_test_schema_without_wagons! maintain_test_schema!
|
17
|
+
alias maintain_test_schema! maintain_test_schema_with_wagons!
|
17
18
|
|
18
19
|
private
|
19
20
|
|
@@ -35,28 +36,40 @@ module ActiveRecord
|
|
35
36
|
if Tasks::DatabaseTasks.respond_to?(:load_schema_for)
|
36
37
|
Tasks::DatabaseTasks.load_schema_for(config)
|
37
38
|
else
|
38
|
-
Tasks::DatabaseTasks.load_schema
|
39
|
+
Tasks::DatabaseTasks.load_schema(config)
|
39
40
|
end
|
40
41
|
check_pending!
|
41
42
|
end
|
42
43
|
|
43
44
|
def app_needs_migration?
|
44
45
|
Wagons.current_wagon ||
|
45
|
-
|
46
|
+
defined_app_migration_versions != migration_versions_in_db
|
46
47
|
end
|
47
48
|
|
48
49
|
def defined_app_migration_versions
|
49
|
-
|
50
|
+
if defined?(MigrationContext)
|
51
|
+
migration_context.migrations.collect(&:version).to_set
|
52
|
+
else
|
53
|
+
Migrator.migrations(Migrator.migrations_paths).collect(&:version).to_set
|
54
|
+
end
|
50
55
|
end
|
51
56
|
|
52
57
|
def migration_versions_in_db
|
53
58
|
if Base.connection.table_exists?(SchemaMigration.table_name)
|
54
|
-
|
59
|
+
if defined?(MigrationContext)
|
60
|
+
migration_context.get_all_versions.to_set
|
61
|
+
else
|
62
|
+
Migrator.get_all_versions.to_set
|
63
|
+
end
|
55
64
|
else
|
56
65
|
[].to_set
|
57
66
|
end
|
58
67
|
end
|
59
68
|
|
69
|
+
def migration_context
|
70
|
+
MigrationContext.new(Migrator.migrations_paths)
|
71
|
+
end
|
72
|
+
|
60
73
|
end
|
61
74
|
end
|
62
75
|
end
|
data/lib/wagons/version.rb
CHANGED
data/lib/wagons/wagon.rb
CHANGED
@@ -59,12 +59,12 @@ module Wagons
|
|
59
59
|
|
60
60
|
# Run the migrations.
|
61
61
|
def migrate(version = nil)
|
62
|
-
|
62
|
+
migrate_to(version)
|
63
63
|
end
|
64
64
|
|
65
65
|
# Revert the migrations.
|
66
66
|
def revert
|
67
|
-
|
67
|
+
migrate_to(0)
|
68
68
|
end
|
69
69
|
|
70
70
|
# Load seed data in db/fixtures.
|
@@ -79,9 +79,7 @@ module Wagons
|
|
79
79
|
|
80
80
|
# Hash of the seed models to their existing records.
|
81
81
|
def existing_seeds
|
82
|
-
|
83
|
-
SeedFuNdo.existing_seeds seed_fixtures
|
84
|
-
end
|
82
|
+
SeedFuNdo.existing_seeds seed_fixtures
|
85
83
|
end
|
86
84
|
|
87
85
|
# Loads the migrations and seeds of this wagon and its dependencies.
|
@@ -128,6 +126,18 @@ module Wagons
|
|
128
126
|
ENV['NO_ENV'] ? [fixtures] : [fixtures, File.join(fixtures, Rails.env)]
|
129
127
|
end
|
130
128
|
|
129
|
+
def migrate_to(version)
|
130
|
+
if defined?(ActiveRecord::MigrationContext)
|
131
|
+
migration_context.migrate(version)
|
132
|
+
else
|
133
|
+
ActiveRecord::Migrator.migrate(migrations_paths, version)
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
def migration_context
|
138
|
+
ActiveRecord::MigrationContext.new(migrations_paths)
|
139
|
+
end
|
140
|
+
|
131
141
|
module ClassMethods
|
132
142
|
# Get or set a version requirement for the main application.
|
133
143
|
# Set the application version in config/initializers/wagon_app_version.rb.
|
@@ -0,0 +1,127 @@
|
|
1
|
+
PATH
|
2
|
+
remote: ../..
|
3
|
+
specs:
|
4
|
+
wagons (0.4.8)
|
5
|
+
bundler (>= 1.1)
|
6
|
+
rails (>= 4.2)
|
7
|
+
seed-fu-ndo (>= 0.0.3)
|
8
|
+
|
9
|
+
GEM
|
10
|
+
remote: https://rubygems.org/
|
11
|
+
specs:
|
12
|
+
actionmailer (4.2.10)
|
13
|
+
actionpack (= 4.2.10)
|
14
|
+
actionview (= 4.2.10)
|
15
|
+
activejob (= 4.2.10)
|
16
|
+
mail (~> 2.5, >= 2.5.4)
|
17
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
18
|
+
actionpack (4.2.10)
|
19
|
+
actionview (= 4.2.10)
|
20
|
+
activesupport (= 4.2.10)
|
21
|
+
rack (~> 1.6)
|
22
|
+
rack-test (~> 0.6.2)
|
23
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
24
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
25
|
+
actionview (4.2.10)
|
26
|
+
activesupport (= 4.2.10)
|
27
|
+
builder (~> 3.1)
|
28
|
+
erubis (~> 2.7.0)
|
29
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
30
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
31
|
+
activejob (4.2.10)
|
32
|
+
activesupport (= 4.2.10)
|
33
|
+
globalid (>= 0.3.0)
|
34
|
+
activemodel (4.2.10)
|
35
|
+
activesupport (= 4.2.10)
|
36
|
+
builder (~> 3.1)
|
37
|
+
activerecord (4.2.10)
|
38
|
+
activemodel (= 4.2.10)
|
39
|
+
activesupport (= 4.2.10)
|
40
|
+
arel (~> 6.0)
|
41
|
+
activesupport (4.2.10)
|
42
|
+
i18n (~> 0.7)
|
43
|
+
minitest (~> 5.1)
|
44
|
+
thread_safe (~> 0.3, >= 0.3.4)
|
45
|
+
tzinfo (~> 1.1)
|
46
|
+
arel (6.0.4)
|
47
|
+
builder (3.2.3)
|
48
|
+
concurrent-ruby (1.0.5)
|
49
|
+
crass (1.0.4)
|
50
|
+
erubis (2.7.0)
|
51
|
+
globalid (0.4.1)
|
52
|
+
activesupport (>= 4.2.0)
|
53
|
+
i18n (0.9.5)
|
54
|
+
concurrent-ruby (~> 1.0)
|
55
|
+
loofah (2.2.2)
|
56
|
+
crass (~> 1.0.2)
|
57
|
+
nokogiri (>= 1.5.9)
|
58
|
+
mail (2.7.0)
|
59
|
+
mini_mime (>= 0.1.1)
|
60
|
+
metaclass (0.0.4)
|
61
|
+
mini_mime (1.0.0)
|
62
|
+
mini_portile2 (2.3.0)
|
63
|
+
minitest (5.11.3)
|
64
|
+
mocha (1.5.0)
|
65
|
+
metaclass (~> 0.0.1)
|
66
|
+
nokogiri (1.8.2)
|
67
|
+
mini_portile2 (~> 2.3.0)
|
68
|
+
open4 (1.3.4)
|
69
|
+
rack (1.6.10)
|
70
|
+
rack-test (0.6.3)
|
71
|
+
rack (>= 1.0)
|
72
|
+
rails (4.2.10)
|
73
|
+
actionmailer (= 4.2.10)
|
74
|
+
actionpack (= 4.2.10)
|
75
|
+
actionview (= 4.2.10)
|
76
|
+
activejob (= 4.2.10)
|
77
|
+
activemodel (= 4.2.10)
|
78
|
+
activerecord (= 4.2.10)
|
79
|
+
activesupport (= 4.2.10)
|
80
|
+
bundler (>= 1.3.0, < 2.0)
|
81
|
+
railties (= 4.2.10)
|
82
|
+
sprockets-rails
|
83
|
+
rails-deprecated_sanitizer (1.0.3)
|
84
|
+
activesupport (>= 4.2.0.alpha)
|
85
|
+
rails-dom-testing (1.0.9)
|
86
|
+
activesupport (>= 4.2.0, < 5.0)
|
87
|
+
nokogiri (~> 1.6)
|
88
|
+
rails-deprecated_sanitizer (>= 1.0.1)
|
89
|
+
rails-html-sanitizer (1.0.4)
|
90
|
+
loofah (~> 2.2, >= 2.2.2)
|
91
|
+
railties (4.2.10)
|
92
|
+
actionpack (= 4.2.10)
|
93
|
+
activesupport (= 4.2.10)
|
94
|
+
rake (>= 0.8.7)
|
95
|
+
thor (>= 0.18.1, < 2.0)
|
96
|
+
rake (12.3.1)
|
97
|
+
seed-fu (2.3.9)
|
98
|
+
activerecord (>= 3.1)
|
99
|
+
activesupport (>= 3.1)
|
100
|
+
seed-fu-ndo (0.0.3)
|
101
|
+
seed-fu (>= 2.2.0)
|
102
|
+
sprockets (3.7.1)
|
103
|
+
concurrent-ruby (~> 1.0)
|
104
|
+
rack (> 1, < 3)
|
105
|
+
sprockets-rails (3.2.1)
|
106
|
+
actionpack (>= 4.0)
|
107
|
+
activesupport (>= 4.0)
|
108
|
+
sprockets (>= 3.0.0)
|
109
|
+
sqlite3 (1.3.13)
|
110
|
+
thor (0.20.0)
|
111
|
+
thread_safe (0.3.6)
|
112
|
+
tzinfo (1.2.5)
|
113
|
+
thread_safe (~> 0.1)
|
114
|
+
|
115
|
+
PLATFORMS
|
116
|
+
ruby
|
117
|
+
|
118
|
+
DEPENDENCIES
|
119
|
+
mocha
|
120
|
+
open4
|
121
|
+
rails (~> 4.2.0)
|
122
|
+
seed-fu-ndo (>= 0.0.2)
|
123
|
+
sqlite3
|
124
|
+
wagons!
|
125
|
+
|
126
|
+
BUNDLED WITH
|
127
|
+
1.16.1
|
@@ -0,0 +1,134 @@
|
|
1
|
+
PATH
|
2
|
+
remote: ../..
|
3
|
+
specs:
|
4
|
+
wagons (0.4.8)
|
5
|
+
bundler (>= 1.1)
|
6
|
+
rails (>= 4.2)
|
7
|
+
seed-fu-ndo (>= 0.0.3)
|
8
|
+
|
9
|
+
GEM
|
10
|
+
remote: https://rubygems.org/
|
11
|
+
specs:
|
12
|
+
actioncable (5.0.4)
|
13
|
+
actionpack (= 5.0.4)
|
14
|
+
nio4r (>= 1.2, < 3.0)
|
15
|
+
websocket-driver (~> 0.6.1)
|
16
|
+
actionmailer (5.0.4)
|
17
|
+
actionpack (= 5.0.4)
|
18
|
+
actionview (= 5.0.4)
|
19
|
+
activejob (= 5.0.4)
|
20
|
+
mail (~> 2.5, >= 2.5.4)
|
21
|
+
rails-dom-testing (~> 2.0)
|
22
|
+
actionpack (5.0.4)
|
23
|
+
actionview (= 5.0.4)
|
24
|
+
activesupport (= 5.0.4)
|
25
|
+
rack (~> 2.0)
|
26
|
+
rack-test (~> 0.6.3)
|
27
|
+
rails-dom-testing (~> 2.0)
|
28
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
29
|
+
actionview (5.0.4)
|
30
|
+
activesupport (= 5.0.4)
|
31
|
+
builder (~> 3.1)
|
32
|
+
erubis (~> 2.7.0)
|
33
|
+
rails-dom-testing (~> 2.0)
|
34
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
35
|
+
activejob (5.0.4)
|
36
|
+
activesupport (= 5.0.4)
|
37
|
+
globalid (>= 0.3.6)
|
38
|
+
activemodel (5.0.4)
|
39
|
+
activesupport (= 5.0.4)
|
40
|
+
activerecord (5.0.4)
|
41
|
+
activemodel (= 5.0.4)
|
42
|
+
activesupport (= 5.0.4)
|
43
|
+
arel (~> 7.0)
|
44
|
+
activesupport (5.0.4)
|
45
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
46
|
+
i18n (~> 0.7)
|
47
|
+
minitest (~> 5.1)
|
48
|
+
tzinfo (~> 1.1)
|
49
|
+
arel (7.1.4)
|
50
|
+
builder (3.2.3)
|
51
|
+
concurrent-ruby (1.0.5)
|
52
|
+
crass (1.0.4)
|
53
|
+
erubis (2.7.0)
|
54
|
+
globalid (0.4.1)
|
55
|
+
activesupport (>= 4.2.0)
|
56
|
+
i18n (0.9.5)
|
57
|
+
concurrent-ruby (~> 1.0)
|
58
|
+
loofah (2.2.2)
|
59
|
+
crass (~> 1.0.2)
|
60
|
+
nokogiri (>= 1.5.9)
|
61
|
+
mail (2.7.0)
|
62
|
+
mini_mime (>= 0.1.1)
|
63
|
+
metaclass (0.0.4)
|
64
|
+
method_source (0.9.0)
|
65
|
+
mini_mime (1.0.0)
|
66
|
+
mini_portile2 (2.3.0)
|
67
|
+
minitest (5.11.3)
|
68
|
+
mocha (1.5.0)
|
69
|
+
metaclass (~> 0.0.1)
|
70
|
+
nio4r (2.3.1)
|
71
|
+
nokogiri (1.8.2)
|
72
|
+
mini_portile2 (~> 2.3.0)
|
73
|
+
open4 (1.3.4)
|
74
|
+
rack (2.0.5)
|
75
|
+
rack-test (0.6.3)
|
76
|
+
rack (>= 1.0)
|
77
|
+
rails (5.0.4)
|
78
|
+
actioncable (= 5.0.4)
|
79
|
+
actionmailer (= 5.0.4)
|
80
|
+
actionpack (= 5.0.4)
|
81
|
+
actionview (= 5.0.4)
|
82
|
+
activejob (= 5.0.4)
|
83
|
+
activemodel (= 5.0.4)
|
84
|
+
activerecord (= 5.0.4)
|
85
|
+
activesupport (= 5.0.4)
|
86
|
+
bundler (>= 1.3.0, < 2.0)
|
87
|
+
railties (= 5.0.4)
|
88
|
+
sprockets-rails (>= 2.0.0)
|
89
|
+
rails-dom-testing (2.0.3)
|
90
|
+
activesupport (>= 4.2.0)
|
91
|
+
nokogiri (>= 1.6)
|
92
|
+
rails-html-sanitizer (1.0.4)
|
93
|
+
loofah (~> 2.2, >= 2.2.2)
|
94
|
+
railties (5.0.4)
|
95
|
+
actionpack (= 5.0.4)
|
96
|
+
activesupport (= 5.0.4)
|
97
|
+
method_source
|
98
|
+
rake (>= 0.8.7)
|
99
|
+
thor (>= 0.18.1, < 2.0)
|
100
|
+
rake (12.3.1)
|
101
|
+
seed-fu (2.3.9)
|
102
|
+
activerecord (>= 3.1)
|
103
|
+
activesupport (>= 3.1)
|
104
|
+
seed-fu-ndo (0.0.3)
|
105
|
+
seed-fu (>= 2.2.0)
|
106
|
+
sprockets (3.7.1)
|
107
|
+
concurrent-ruby (~> 1.0)
|
108
|
+
rack (> 1, < 3)
|
109
|
+
sprockets-rails (3.2.1)
|
110
|
+
actionpack (>= 4.0)
|
111
|
+
activesupport (>= 4.0)
|
112
|
+
sprockets (>= 3.0.0)
|
113
|
+
sqlite3 (1.3.13)
|
114
|
+
thor (0.20.0)
|
115
|
+
thread_safe (0.3.6)
|
116
|
+
tzinfo (1.2.5)
|
117
|
+
thread_safe (~> 0.1)
|
118
|
+
websocket-driver (0.6.5)
|
119
|
+
websocket-extensions (>= 0.1.0)
|
120
|
+
websocket-extensions (0.1.3)
|
121
|
+
|
122
|
+
PLATFORMS
|
123
|
+
ruby
|
124
|
+
|
125
|
+
DEPENDENCIES
|
126
|
+
mocha
|
127
|
+
open4
|
128
|
+
rails (~> 5.0.0)
|
129
|
+
seed-fu-ndo (>= 0.0.2)
|
130
|
+
sqlite3
|
131
|
+
wagons!
|
132
|
+
|
133
|
+
BUNDLED WITH
|
134
|
+
1.16.1
|