caboose-cms 0.7.40 → 0.7.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 38b087573b26f119de90d1c3cce36ea525f99cff
4
- data.tar.gz: 8f017e560ca2a6d1642820d0ee329754f78dea07
3
+ metadata.gz: 6aa29b1be26c03e73a77ad92a9e90ad7d29df8bb
4
+ data.tar.gz: 558fa96d365b927ce5d8f9871b6965d715930eb3
5
5
  SHA512:
6
- metadata.gz: 3d36a79446a3bacd8e04fc142261f98f2d516feb85d0ee478ad4685a11a7c452b04f7ae51e248c2645bfba266f9ad612d1638a8b4eba901be022805608a5c633
7
- data.tar.gz: 88c9eb9cf672333f02067b61e923d9d247c983e58c80d610fc4e2963b4e7259b3aef23e16b11b5c81dfc6be2f759c15d3ab9b4c5d00b4bae5a6bb6c06eb8c92e
6
+ metadata.gz: 8e8cb844a824029ac48c6ee79e9b5c78909dc3f3c046011d7fcfcc9f53a5a6e29114bf2a02fa40b735e5252882f4c1acc5bc92aa4ae1f9206e496522c6116f08
7
+ data.tar.gz: 46ac5b3e79f447868cffcd1ca72a9b97fa7f4c34862aef8cf9600960bb9dcc46bf55d636d69190c22aa654b140b5f4cb92284ee7486dc595a9292bd479847f67
@@ -49,11 +49,14 @@ class Caboose::Media < ActiveRecord::Base
49
49
 
50
50
  image_extensions = ['.jpg', '.jpeg', '.gif', '.png', '.tif']
51
51
  ext = File.extname(key).downcase
52
+ mimetype = Caboose::Mimetype.mimetype_for_extension(ext)
52
53
  if image_extensions.include?(ext)
53
54
  self.image = URI.parse(uri)
55
+ self.image_content_type = mimetype if mimetype
54
56
  else
55
57
  self.file = URI.parse(uri)
56
- end
58
+ self.file_content_type = mimetype if mimetype
59
+ end
57
60
  self.processed = true
58
61
  self.save
59
62
 
@@ -0,0 +1,695 @@
1
+ module Caboose
2
+ class Mimetype
3
+
4
+ self.mimetype_for_extension(ext)
5
+ case ext
6
+ when '.x3d' then return 'application/vnd.hzn-3d-crossword'
7
+ when '.3gp' then return 'video/3gpp'
8
+ when '.3g2' then return 'video/3gpp2'
9
+ when '.mseq' then return 'application/vnd.mseq'
10
+ when '.pwn' then return 'application/vnd.3m.post-it-notes'
11
+ when '.plb' then return 'application/vnd.3gpp.pic-bw-large'
12
+ when '.psb' then return 'application/vnd.3gpp.pic-bw-small'
13
+ when '.pvb' then return 'application/vnd.3gpp.pic-bw-var'
14
+ when '.tcap' then return 'application/vnd.3gpp2.tcap'
15
+ when '.7z' then return 'application/x-7z-compressed'
16
+ when '.abw' then return 'application/x-abiword'
17
+ when '.ace' then return 'application/x-ace-compressed'
18
+ when '.acc' then return 'application/vnd.americandynamics.acc'
19
+ when '.acu' then return 'application/vnd.acucobol'
20
+ when '.atc' then return 'application/vnd.acucorp'
21
+ when '.adp' then return 'audio/adpcm'
22
+ when '.aab' then return 'application/x-authorware-bin'
23
+ when '.aam' then return 'application/x-authorware-map'
24
+ when '.aas' then return 'application/x-authorware-seg'
25
+ when '.air' then return 'application/vnd.adobe.air-application-installer-package+zip'
26
+ when '.swf' then return 'application/x-shockwave-flash'
27
+ when '.fxp' then return 'application/vnd.adobe.fxp'
28
+ when '.pdf' then return 'application/pdf'
29
+ when '.ppd' then return 'application/vnd.cups-ppd'
30
+ when '.dir' then return 'application/x-director'
31
+ when '.xdp' then return 'application/vnd.adobe.xdp+xml'
32
+ when '.xfdf' then return 'application/vnd.adobe.xfdf'
33
+ when '.aac' then return 'audio/x-aac'
34
+ when '.ahead' then return 'application/vnd.ahead.space'
35
+ when '.azf' then return 'application/vnd.airzip.filesecure.azf'
36
+ when '.azs' then return 'application/vnd.airzip.filesecure.azs'
37
+ when '.azw' then return 'application/vnd.amazon.ebook'
38
+ when '.ami' then return 'application/vnd.amiga.ami'
39
+ when '.apk' then return 'application/vnd.android.package-archive'
40
+ when '.cii' then return 'application/vnd.anser-web-certificate-issue-initiation'
41
+ when '.fti' then return 'application/vnd.anser-web-funds-transfer-initiation'
42
+ when '.atx' then return 'application/vnd.antix.game-component'
43
+ when '.mpkg' then return 'application/vnd.apple.installer+xml'
44
+ when '.aw' then return 'application/applixware'
45
+ when '.les' then return 'application/vnd.hhe.lesson-player'
46
+ when '.swi' then return 'application/vnd.aristanetworks.swi'
47
+ when '.s' then return 'text/x-asm'
48
+ when '.atomcat' then return 'application/atomcat+xml'
49
+ when '.atomsvc' then return 'application/atomsvc+xml'
50
+ when '.atom' then return'application/atom+xml'
51
+ when '.xml' then return 'application/atom+xml'
52
+ when '.ac' then return 'application/pkix-attr-cert'
53
+ when '.aif' then return 'audio/x-aiff'
54
+ when '.avi' then return 'video/x-msvideo'
55
+ when '.aep' then return 'application/vnd.audiograph'
56
+ when '.dxf' then return 'image/vnd.dxf'
57
+ when '.dwf' then return 'model/vnd.dwf'
58
+ when '.par' then return 'text/plain-bas'
59
+ when '.bcpio' then return 'application/x-bcpio'
60
+ when '.bin' then return 'application/octet-stream'
61
+ when '.bmp' then return 'image/bmp'
62
+ when '.torrent' then return 'application/x-bittorrent'
63
+ when '.cod' then return 'application/vnd.rim.cod'
64
+ when '.mpm' then return 'application/vnd.blueice.multipass'
65
+ when '.bmi' then return 'application/vnd.bmi'
66
+ when '.sh' then return 'application/x-sh'
67
+ when '.btif' then return 'image/prs.btif'
68
+ when '.rep' then return 'application/vnd.businessobjects'
69
+ when '.bz' then return 'application/x-bzip'
70
+ when '.bz2' then return 'application/x-bzip2'
71
+ when '.csh' then return 'application/x-csh'
72
+ when '.c' then return 'text/x-c'
73
+ when '.cdxml' then return 'application/vnd.chemdraw+xml'
74
+ when '.css' then return 'text/css'
75
+ when '.cdx' then return 'chemical/x-cdx'
76
+ when '.cml' then return 'chemical/x-cml'
77
+ when '.csml' then return 'chemical/x-csml'
78
+ when '.cdbcmsg' then return 'application/vnd.contact.cmsg'
79
+ when '.cla' then return 'application/vnd.claymore'
80
+ when '.c4g' then return 'application/vnd.clonk.c4group'
81
+ when '.sub' then return 'image/vnd.dvb.subtitle'
82
+ when '.cdmia' then return 'application/cdmi-capability'
83
+ when '.cdmic' then return 'application/cdmi-container'
84
+ when '.cdmid' then return 'application/cdmi-domain'
85
+ when '.cdmio' then return 'application/cdmi-object'
86
+ when '.cdmiq' then return 'application/cdmi-queue'
87
+ when '.c11amc' then return 'application/vnd.cluetrust.cartomobile-config'
88
+ when '.c11amz' then return 'application/vnd.cluetrust.cartomobile-config-pkg'
89
+ when '.ras' then return 'image/x-cmu-raster'
90
+ when '.dae' then return 'model/vnd.collada+xml'
91
+ when '.csv' then return 'text/csv'
92
+ when '.cpt' then return 'application/mac-compactpro'
93
+ when '.wmlc' then return 'application/vnd.wap.wmlc'
94
+ when '.cgm' then return 'image/cgm'
95
+ when '.ice' then return 'x-conference/x-cooltalk'
96
+ when '.cmx' then return 'image/x-cmx'
97
+ when '.xar' then return 'application/vnd.xara'
98
+ when '.cmc' then return 'application/vnd.cosmocaller'
99
+ when '.cpio' then return 'application/x-cpio'
100
+ when '.clkx' then return 'application/vnd.crick.clicker'
101
+ when '.clkk' then return 'application/vnd.crick.clicker.keyboard'
102
+ when '.clkp' then return 'application/vnd.crick.clicker.palette'
103
+ when '.clkt' then return 'application/vnd.crick.clicker.template'
104
+ when '.clkw' then return 'application/vnd.crick.clicker.wordbank'
105
+ when '.wbs' then return 'application/vnd.criticaltools.wbs+xml'
106
+ when '.cryptonote' then return 'application/vnd.rig.cryptonote'
107
+ when '.cif' then return 'chemical/x-cif'
108
+ when '.cmdf' then return 'chemical/x-cmdf'
109
+ when '.cu' then return 'application/cu-seeme'
110
+ when '.cww' then return 'application/prs.cww'
111
+ when '.curl' then return 'text/vnd.curl'
112
+ when '.dcurl' then return 'text/vnd.curl.dcurl'
113
+ when '.mcurl' then return 'text/vnd.curl.mcurl'
114
+ when '.scurl' then return 'text/vnd.curl.scurl'
115
+ when '.car' then return 'application/vnd.curl.car'
116
+ when '.pcurl' then return 'application/vnd.curl.pcurl'
117
+ when '.cmp' then return 'application/vnd.yellowriver-custom-menu'
118
+ when '.dssc' then return 'application/dssc+der'
119
+ when '.xdssc' then return 'application/dssc+xml'
120
+ when '.deb' then return 'application/x-debian-package'
121
+ when '.uva' then return 'audio/vnd.dece.audio'
122
+ when '.uvi' then return 'image/vnd.dece.graphic'
123
+ when '.uvh' then return 'video/vnd.dece.hd'
124
+ when '.uvm' then return 'video/vnd.dece.mobile'
125
+ when '.uvu' then return 'video/vnd.uvvu.mp4'
126
+ when '.uvp' then return 'video/vnd.dece.pd'
127
+ when '.uvs' then return 'video/vnd.dece.sd'
128
+ when '.uvv' then return 'video/vnd.dece.video'
129
+ when '.dvi' then return 'application/x-dvi'
130
+ when '.seed' then return 'application/vnd.fdsn.seed'
131
+ when '.dtb' then return 'application/x-dtbook+xml'
132
+ when '.res' then return 'application/x-dtbresource+xml'
133
+ when '.ait' then return 'application/vnd.dvb.ait'
134
+ when '.svc' then return 'application/vnd.dvb.service'
135
+ when '.eol' then return 'audio/vnd.digital-winds'
136
+ when '.djvu' then return 'image/vnd.djvu'
137
+ when '.dtd' then return 'application/xml-dtd'
138
+ when '.mlp' then return 'application/vnd.dolby.mlp'
139
+ when '.wad' then return 'application/x-doom'
140
+ when '.dpg' then return 'application/vnd.dpgraph'
141
+ when '.dra' then return 'audio/vnd.dra'
142
+ when '.dfac' then return 'application/vnd.dreamfactory'
143
+ when '.dts' then return 'audio/vnd.dts'
144
+ when '.dtshd' then return 'audio/vnd.dts.hd'
145
+ when '.dwg' then return 'image/vnd.dwg'
146
+ when '.geo' then return 'application/vnd.dynageo'
147
+ when '.es' then return 'application/ecmascript'
148
+ when '.mag' then return 'application/vnd.ecowin.chart'
149
+ when '.mmr' then return 'image/vnd.fujixerox.edmics-mmr'
150
+ when '.rlc' then return 'image/vnd.fujixerox.edmics-rlc'
151
+ when '.exi' then return 'application/exi'
152
+ when '.mgz' then return 'application/vnd.proteus.magazine'
153
+ when '.epub' then return 'application/epub+zip'
154
+ when '.eml' then return 'message/rfc822'
155
+ when '.nml' then return 'application/vnd.enliven'
156
+ when '.xpr' then return 'application/vnd.is-xpr'
157
+ when '.xif' then return 'image/vnd.xiff'
158
+ when '.xfdl' then return 'application/vnd.xfdl'
159
+ when '.emma' then return 'application/emma+xml'
160
+ when '.ez2' then return 'application/vnd.ezpix-album'
161
+ when '.ez3' then return 'application/vnd.ezpix-package'
162
+ when '.fst' then return 'image/vnd.fst'
163
+ when '.fvt' then return 'video/vnd.fvt'
164
+ when '.fbs' then return 'image/vnd.fastbidsheet'
165
+ when '.fe_launch' then return 'application/vnd.denovo.fcselayout-link'
166
+ when '.f4v' then return 'video/x-f4v'
167
+ when '.flv' then return 'video/x-flv'
168
+ when '.fpx' then return 'image/vnd.fpx'
169
+ when '.npx' then return 'image/vnd.net-fpx'
170
+ when '.flx' then return 'text/vnd.fmi.flexstor'
171
+ when '.fli' then return 'video/x-fli'
172
+ when '.ftc' then return 'application/vnd.fluxtime.clip'
173
+ when '.fdf' then return 'application/vnd.fdf'
174
+ when '.f' then return 'text/x-fortran'
175
+ when '.mif' then return 'application/vnd.mif'
176
+ when '.fm' then return 'application/vnd.framemaker'
177
+ when '.fh' then return 'image/x-freehand'
178
+ when '.fsc' then return 'application/vnd.fsc.weblaunch'
179
+ when '.fnc' then return 'application/vnd.frogans.fnc'
180
+ when '.ltf' then return 'application/vnd.frogans.ltf'
181
+ when '.ddd' then return 'application/vnd.fujixerox.ddd'
182
+ when '.xdw' then return 'application/vnd.fujixerox.docuworks'
183
+ when '.xbd' then return 'application/vnd.fujixerox.docuworks.binder'
184
+ when '.oas' then return 'application/vnd.fujitsu.oasys'
185
+ when '.oa2' then return 'application/vnd.fujitsu.oasys2'
186
+ when '.oa3' then return 'application/vnd.fujitsu.oasys3'
187
+ when '.fg5' then return 'application/vnd.fujitsu.oasysgp'
188
+ when '.bh2' then return 'application/vnd.fujitsu.oasysprs'
189
+ when '.spl' then return 'application/x-futuresplash'
190
+ when '.fzs' then return 'application/vnd.fuzzysheet'
191
+ when '.g3' then return 'image/g3fax'
192
+ when '.gmx' then return 'application/vnd.gmx'
193
+ when '.gtw' then return 'model/vnd.gtw'
194
+ when '.txd' then return 'application/vnd.genomatix.tuxedo'
195
+ when '.ggb' then return 'application/vnd.geogebra.file'
196
+ when '.ggt' then return 'application/vnd.geogebra.tool'
197
+ when '.gdl' then return 'model/vnd.gdl'
198
+ when '.gex' then return 'application/vnd.geometry-explorer'
199
+ when '.gxt' then return 'application/vnd.geonext'
200
+ when '.g2w' then return 'application/vnd.geoplan'
201
+ when '.g3w' then return 'application/vnd.geospace'
202
+ when '.gsf' then return 'application/x-font-ghostscript'
203
+ when '.bdf' then return 'application/x-font-bdf'
204
+ when '.gtar' then return 'application/x-gtar'
205
+ when '.texinfo' then return 'application/x-texinfo'
206
+ when '.gnumeric' then return 'application/x-gnumeric'
207
+ when '.kml' then return 'application/vnd.google-earth.kml+xml'
208
+ when '.kmz' then return 'application/vnd.google-earth.kmz'
209
+ when '.gqf' then return 'application/vnd.grafeq'
210
+ when '.gif' then return 'image/gif'
211
+ when '.gv' then return 'text/vnd.graphviz'
212
+ when '.gac' then return 'application/vnd.groove-account'
213
+ when '.ghf' then return 'application/vnd.groove-help'
214
+ when '.gim' then return 'application/vnd.groove-identity-message'
215
+ when '.grv' then return 'application/vnd.groove-injector'
216
+ when '.gtm' then return 'application/vnd.groove-tool-message'
217
+ when '.tpl' then return 'application/vnd.groove-tool-template'
218
+ when '.vcg' then return 'application/vnd.groove-vcard'
219
+ when '.h261' then return 'video/h261'
220
+ when '.h263' then return 'video/h263'
221
+ when '.h264' then return 'video/h264'
222
+ when '.hpid' then return 'application/vnd.hp-hpid'
223
+ when '.hps' then return 'application/vnd.hp-hps'
224
+ when '.hdf' then return 'application/x-hdf'
225
+ when '.rip' then return 'audio/vnd.rip'
226
+ when '.hbci' then return 'application/vnd.hbci'
227
+ when '.jlt' then return 'application/vnd.hp-jlyt'
228
+ when '.pcl' then return 'application/vnd.hp-pcl'
229
+ when '.hpgl' then return 'application/vnd.hp-hpgl'
230
+ when '.hvs' then return 'application/vnd.yamaha.hv-script'
231
+ when '.hvd' then return 'application/vnd.yamaha.hv-dic'
232
+ when '.hvp' then return 'application/vnd.yamaha.hv-voice'
233
+ when '.sfd-hdstx' then return 'application/vnd.hydrostatix.sof-data'
234
+ when '.stk' then return 'application/hyperstudio'
235
+ when '.hal' then return 'application/vnd.hal+xml'
236
+ when '.html' then return 'text/html'
237
+ when '.irm' then return 'application/vnd.ibm.rights-management'
238
+ when '.sc' then return 'application/vnd.ibm.secure-container'
239
+ when '.ics' then return 'text/calendar'
240
+ when '.icc' then return 'application/vnd.iccprofile'
241
+ when '.ico' then return 'image/x-icon'
242
+ when '.igl' then return 'application/vnd.igloader'
243
+ when '.ief' then return 'image/ief'
244
+ when '.ivp' then return 'application/vnd.immervision-ivp'
245
+ when '.ivu' then return 'application/vnd.immervision-ivu'
246
+ when '.rif' then return 'application/reginfo+xml'
247
+ when '.3dml' then return 'text/vnd.in3d.3dml'
248
+ when '.spot' then return 'text/vnd.in3d.spot'
249
+ when '.igs' then return 'model/iges'
250
+ when '.i2g' then return 'application/vnd.intergeo'
251
+ when '.cdy' then return 'application/vnd.cinderella'
252
+ when '.xpw' then return 'application/vnd.intercon.formnet'
253
+ when '.fcs' then return 'application/vnd.isac.fcs'
254
+ when '.ipfix' then return 'application/ipfix'
255
+ when '.cer' then return 'application/pkix-cert'
256
+ when '.pki' then return 'application/pkixcmp'
257
+ when '.crl' then return 'application/pkix-crl'
258
+ when '.pkipath' then return 'application/pkix-pkipath'
259
+ when '.igm' then return 'application/vnd.insors.igm'
260
+ when '.rcprofile' then return 'application/vnd.ipunplugged.rcprofile'
261
+ when '.irp' then return 'application/vnd.irepository.package+xml'
262
+ when '.jad' then return 'text/vnd.sun.j2me.app-descriptor'
263
+ when '.jar' then return 'application/java-archive'
264
+ when '.class' then return 'application/java-vm'
265
+ when '.jnlp' then return 'application/x-java-jnlp-file'
266
+ when '.ser' then return 'application/java-serialized-object'
267
+ when '.java' then return 'text/x-java-source,java'
268
+ when '.js' then return 'application/javascript'
269
+ when '.json' then return 'application/json'
270
+ when '.joda' then return 'application/vnd.joost.joda-archive'
271
+ when '.jpm' then return 'video/jpm'
272
+ when '.jpeg, .jpg' then return 'image/jpeg'
273
+ when '.jpgv' then return 'video/jpeg'
274
+ when '.ktz' then return 'application/vnd.kahootz'
275
+ when '.mmd' then return 'application/vnd.chipnuts.karaoke-mmd'
276
+ when '.karbon' then return 'application/vnd.kde.karbon'
277
+ when '.chrt' then return 'application/vnd.kde.kchart'
278
+ when '.kfo' then return 'application/vnd.kde.kformula'
279
+ when '.flw' then return 'application/vnd.kde.kivio'
280
+ when '.kon' then return 'application/vnd.kde.kontour'
281
+ when '.kpr' then return 'application/vnd.kde.kpresenter'
282
+ when '.ksp' then return 'application/vnd.kde.kspread'
283
+ when '.kwd' then return 'application/vnd.kde.kword'
284
+ when '.htke' then return 'application/vnd.kenameaapp'
285
+ when '.kia' then return 'application/vnd.kidspiration'
286
+ when '.kne' then return 'application/vnd.kinar'
287
+ when '.sse' then return 'application/vnd.kodak-descriptor'
288
+ when '.lasxml' then return 'application/vnd.las.las+xml'
289
+ when '.latex' then return 'application/x-latex'
290
+ when '.lbd' then return 'application/vnd.llamagraphics.life-balance.desktop'
291
+ when '.lbe' then return 'application/vnd.llamagraphics.life-balance.exchange+xml'
292
+ when '.jam' then return 'application/vnd.jam'
293
+ when '.123' then return 'application/vnd.lotus-1-2-3'
294
+ when '.apr' then return 'application/vnd.lotus-approach'
295
+ when '.pre' then return 'application/vnd.lotus-freelance'
296
+ when '.nsf' then return 'application/vnd.lotus-notes'
297
+ when '.org' then return 'application/vnd.lotus-organizer'
298
+ when '.scm' then return 'application/vnd.lotus-screencam'
299
+ when '.lwp' then return 'application/vnd.lotus-wordpro'
300
+ when '.lvp' then return 'audio/vnd.lucent.voice'
301
+ when '.m3u' then return 'audio/x-mpegurl'
302
+ when '.m4v' then return 'video/x-m4v'
303
+ when '.hqx' then return 'application/mac-binhex40'
304
+ when '.portpkg' then return 'application/vnd.macports.portpkg'
305
+ when '.mgp' then return 'application/vnd.osgeo.mapguide.package'
306
+ when '.mrc' then return 'application/marc'
307
+ when '.mrcx' then return 'application/marcxml+xml'
308
+ when '.mxf' then return 'application/mxf'
309
+ when '.nbp' then return 'application/vnd.wolfram.player'
310
+ when '.ma' then return 'application/mathematica'
311
+ when '.mathml' then return 'application/mathml+xml'
312
+ when '.mbox' then return 'application/mbox'
313
+ when '.mc1' then return 'application/vnd.medcalcdata'
314
+ when '.mscml' then return 'application/mediaservercontrol+xml'
315
+ when '.cdkey' then return 'application/vnd.mediastation.cdkey'
316
+ when '.mwf' then return 'application/vnd.mfer'
317
+ when '.mfm' then return 'application/vnd.mfmp'
318
+ when '.msh' then return 'model/mesh'
319
+ when '.mads' then return 'application/mads+xml'
320
+ when '.mets' then return 'application/mets+xml'
321
+ when '.mods' then return 'application/mods+xml'
322
+ when '.meta4' then return 'application/metalink4+xml'
323
+ when '.potm' then return 'application/vnd.ms-powerpoint.template.macroenabled.12'
324
+ when '.docm' then return 'application/vnd.ms-word.document.macroenabled.12'
325
+ when '.dotm' then return 'application/vnd.ms-word.template.macroenabled.12'
326
+ when '.mcd' then return 'application/vnd.mcd'
327
+ when '.flo' then return 'application/vnd.micrografx.flo'
328
+ when '.igx' then return 'application/vnd.micrografx.igx'
329
+ when '.es3' then return 'application/vnd.eszigno3+xml'
330
+ when '.mdb' then return 'application/x-msaccess'
331
+ when '.asf' then return 'video/x-ms-asf'
332
+ when '.exe' then return 'application/x-msdownload'
333
+ when '.cil' then return 'application/vnd.ms-artgalry'
334
+ when '.cab' then return 'application/vnd.ms-cab-compressed'
335
+ when '.ims' then return 'application/vnd.ms-ims'
336
+ when '.application' then return 'application/x-ms-application'
337
+ when '.clp' then return 'application/x-msclip'
338
+ when '.mdi' then return 'image/vnd.ms-modi'
339
+ when '.eot' then return 'application/vnd.ms-fontobject'
340
+ when '.xls' then return 'application/vnd.ms-excel'
341
+ when '.xlam' then return 'application/vnd.ms-excel.addin.macroenabled.12'
342
+ when '.xlsb' then return 'application/vnd.ms-excel.sheet.binary.macroenabled.12'
343
+ when '.xltm' then return 'application/vnd.ms-excel.template.macroenabled.12'
344
+ when '.xlsm' then return 'application/vnd.ms-excel.sheet.macroenabled.12'
345
+ when '.chm' then return 'application/vnd.ms-htmlhelp'
346
+ when '.crd' then return 'application/x-mscardfile'
347
+ when '.lrm' then return 'application/vnd.ms-lrm'
348
+ when '.mvb' then return 'application/x-msmediaview'
349
+ when '.mny' then return 'application/x-msmoney'
350
+ when '.pptx' then return 'application/vnd.openxmlformats-officedocument.presentationml.presentation'
351
+ when '.sldx' then return 'application/vnd.openxmlformats-officedocument.presentationml.slide'
352
+ when '.ppsx' then return 'application/vnd.openxmlformats-officedocument.presentationml.slideshow'
353
+ when '.potx' then return 'application/vnd.openxmlformats-officedocument.presentationml.template'
354
+ when '.xlsx' then return 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
355
+ when '.xltx' then return 'application/vnd.openxmlformats-officedocument.spreadsheetml.template'
356
+ when '.docx' then return 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
357
+ when '.dotx' then return 'application/vnd.openxmlformats-officedocument.wordprocessingml.template'
358
+ when '.obd' then return 'application/x-msbinder'
359
+ when '.thmx' then return 'application/vnd.ms-officetheme'
360
+ when '.onetoc' then return 'application/onenote'
361
+ when '.pya' then return 'audio/vnd.ms-playready.media.pya'
362
+ when '.pyv' then return 'video/vnd.ms-playready.media.pyv'
363
+ when '.ppt' then return 'application/vnd.ms-powerpoint'
364
+ when '.ppam' then return 'application/vnd.ms-powerpoint.addin.macroenabled.12'
365
+ when '.sldm' then return 'application/vnd.ms-powerpoint.slide.macroenabled.12'
366
+ when '.pptm' then return 'application/vnd.ms-powerpoint.presentation.macroenabled.12'
367
+ when '.ppsm' then return 'application/vnd.ms-powerpoint.slideshow.macroenabled.12'
368
+ when '.mpp' then return 'application/vnd.ms-project'
369
+ when '.pub' then return 'application/x-mspublisher'
370
+ when '.scd' then return 'application/x-msschedule'
371
+ when '.xap' then return 'application/x-silverlight-app'
372
+ when '.stl' then return 'application/vnd.ms-pki.stl'
373
+ when '.cat' then return 'application/vnd.ms-pki.seccat'
374
+ when '.vsd' then return 'application/vnd.visio'
375
+ when '.wm' then return 'video/x-ms-wm'
376
+ when '.wma' then return 'audio/x-ms-wma'
377
+ when '.wax' then return 'audio/x-ms-wax'
378
+ when '.wmx' then return 'video/x-ms-wmx'
379
+ when '.wmd' then return 'application/x-ms-wmd'
380
+ when '.wpl' then return 'application/vnd.ms-wpl'
381
+ when '.wmz' then return 'application/x-ms-wmz'
382
+ when '.wmv' then return 'video/x-ms-wmv'
383
+ when '.wvx' then return 'video/x-ms-wvx'
384
+ when '.wmf' then return 'application/x-msmetafile'
385
+ when '.trm' then return 'application/x-msterminal'
386
+ when '.doc' then return 'application/msword'
387
+ when '.wri' then return 'application/x-mswrite'
388
+ when '.wps' then return 'application/vnd.ms-works'
389
+ when '.xbap' then return 'application/x-ms-xbap'
390
+ when '.xps' then return 'application/vnd.ms-xpsdocument'
391
+ when '.mid' then return 'audio/midi'
392
+ when '.mpy' then return 'application/vnd.ibm.minipay'
393
+ when '.afp' then return 'application/vnd.ibm.modcap'
394
+ when '.rms' then return 'application/vnd.jcp.javame.midlet-rms'
395
+ when '.tmo' then return 'application/vnd.tmobile-livetv'
396
+ when '.prc' then return 'application/x-mobipocket-ebook'
397
+ when '.mbk' then return 'application/vnd.mobius.mbk'
398
+ when '.dis' then return 'application/vnd.mobius.dis'
399
+ when '.plc' then return 'application/vnd.mobius.plc'
400
+ when '.mqy' then return 'application/vnd.mobius.mqy'
401
+ when '.msl' then return 'application/vnd.mobius.msl'
402
+ when '.txf' then return 'application/vnd.mobius.txf'
403
+ when '.daf' then return 'application/vnd.mobius.daf'
404
+ when '.fly' then return 'text/vnd.fly'
405
+ when '.mpc' then return 'application/vnd.mophun.certificate'
406
+ when '.mpn' then return 'application/vnd.mophun.application'
407
+ when '.mj2' then return 'video/mj2'
408
+ when '.mpga' then return 'audio/mpeg'
409
+ when '.mxu' then return 'video/vnd.mpegurl'
410
+ when '.mpeg' then return 'video/mpeg'
411
+ when '.m21' then return 'application/mp21'
412
+ when '.mp4a' then return 'audio/mp4'
413
+ when '.mp4' then return 'video/mp4'
414
+ when '.mp4' then return 'application/mp4'
415
+ when '.m3u8' then return 'application/vnd.apple.mpegurl'
416
+ when '.mus' then return 'application/vnd.musician'
417
+ when '.msty' then return 'application/vnd.muvee.style'
418
+ when '.mxml' then return 'application/xv+xml'
419
+ when '.ngdat' then return 'application/vnd.nokia.n-gage.data'
420
+ when '.n-gage' then return 'application/vnd.nokia.n-gage.symbian.install'
421
+ when '.ncx' then return 'application/x-dtbncx+xml'
422
+ when '.nc' then return 'application/x-netcdf'
423
+ when '.nlu' then return 'application/vnd.neurolanguage.nlu'
424
+ when '.dna' then return 'application/vnd.dna'
425
+ when '.nnd' then return 'application/vnd.noblenet-directory'
426
+ when '.nns' then return 'application/vnd.noblenet-sealer'
427
+ when '.nnw' then return 'application/vnd.noblenet-web'
428
+ when '.rpst' then return 'application/vnd.nokia.radio-preset'
429
+ when '.rpss' then return 'application/vnd.nokia.radio-presets'
430
+ when '.n3' then return 'text/n3'
431
+ when '.edm' then return 'application/vnd.novadigm.edm'
432
+ when '.edx' then return 'application/vnd.novadigm.edx'
433
+ when '.ext' then return 'application/vnd.novadigm.ext'
434
+ when '.gph' then return 'application/vnd.flographit'
435
+ when '.ecelp4800' then return 'audio/vnd.nuera.ecelp4800'
436
+ when '.ecelp7470' then return 'audio/vnd.nuera.ecelp7470'
437
+ when '.ecelp9600' then return 'audio/vnd.nuera.ecelp9600'
438
+ when '.oda' then return 'application/oda'
439
+ when '.ogx' then return 'application/ogg'
440
+ when '.oga' then return 'audio/ogg'
441
+ when '.ogv' then return 'video/ogg'
442
+ when '.dd2' then return 'application/vnd.oma.dd2+xml'
443
+ when '.oth' then return 'application/vnd.oasis.opendocument.text-web'
444
+ when '.opf' then return 'application/oebps-package+xml'
445
+ when '.qbo' then return 'application/vnd.intu.qbo'
446
+ when '.oxt' then return 'application/vnd.openofficeorg.extension'
447
+ when '.osf' then return 'application/vnd.yamaha.openscoreformat'
448
+ when '.weba' then return 'audio/webm'
449
+ when '.webm' then return 'video/webm'
450
+ when '.odc' then return 'application/vnd.oasis.opendocument.chart'
451
+ when '.otc' then return 'application/vnd.oasis.opendocument.chart-template'
452
+ when '.odb' then return 'application/vnd.oasis.opendocument.database'
453
+ when '.odf' then return 'application/vnd.oasis.opendocument.formula'
454
+ when '.odft' then return 'application/vnd.oasis.opendocument.formula-template'
455
+ when '.odg' then return 'application/vnd.oasis.opendocument.graphics'
456
+ when '.otg' then return 'application/vnd.oasis.opendocument.graphics-template'
457
+ when '.odi' then return 'application/vnd.oasis.opendocument.image'
458
+ when '.oti' then return 'application/vnd.oasis.opendocument.image-template'
459
+ when '.odp' then return 'application/vnd.oasis.opendocument.presentation'
460
+ when '.otp' then return 'application/vnd.oasis.opendocument.presentation-template'
461
+ when '.ods' then return 'application/vnd.oasis.opendocument.spreadsheet'
462
+ when '.ots' then return 'application/vnd.oasis.opendocument.spreadsheet-template'
463
+ when '.odt' then return 'application/vnd.oasis.opendocument.text'
464
+ when '.odm' then return 'application/vnd.oasis.opendocument.text-master'
465
+ when '.ott' then return 'application/vnd.oasis.opendocument.text-template'
466
+ when '.ktx' then return 'image/ktx'
467
+ when '.sxc' then return 'application/vnd.sun.xml.calc'
468
+ when '.stc' then return 'application/vnd.sun.xml.calc.template'
469
+ when '.sxd' then return 'application/vnd.sun.xml.draw'
470
+ when '.std' then return 'application/vnd.sun.xml.draw.template'
471
+ when '.sxi' then return 'application/vnd.sun.xml.impress'
472
+ when '.sti' then return 'application/vnd.sun.xml.impress.template'
473
+ when '.sxm' then return 'application/vnd.sun.xml.math'
474
+ when '.sxw' then return 'application/vnd.sun.xml.writer'
475
+ when '.sxg' then return 'application/vnd.sun.xml.writer.global'
476
+ when '.stw' then return 'application/vnd.sun.xml.writer.template'
477
+ when '.otf' then return 'application/x-font-otf'
478
+ when '.osfpvg' then return 'application/vnd.yamaha.openscoreformat.osfpvg+xml'
479
+ when '.dp' then return 'application/vnd.osgi.dp'
480
+ when '.pdb' then return 'application/vnd.palm'
481
+ when '.p' then return 'text/x-pascal'
482
+ when '.paw' then return 'application/vnd.pawaafile'
483
+ when '.pclxl' then return 'application/vnd.hp-pclxl'
484
+ when '.efif' then return 'application/vnd.picsel'
485
+ when '.pcx' then return 'image/x-pcx'
486
+ when '.psd' then return 'image/vnd.adobe.photoshop'
487
+ when '.prf' then return 'application/pics-rules'
488
+ when '.pic' then return 'image/x-pict'
489
+ when '.chat' then return 'application/x-chat'
490
+ when '.p10' then return 'application/pkcs10'
491
+ when '.p12' then return 'application/x-pkcs12'
492
+ when '.p7m' then return 'application/pkcs7-mime'
493
+ when '.p7s' then return 'application/pkcs7-signature'
494
+ when '.p7r' then return 'application/x-pkcs7-certreqresp'
495
+ when '.p7b' then return 'application/x-pkcs7-certificates'
496
+ when '.p8' then return 'application/pkcs8'
497
+ when '.plf' then return 'application/vnd.pocketlearn'
498
+ when '.pnm' then return 'image/x-portable-anymap'
499
+ when '.pbm' then return 'image/x-portable-bitmap'
500
+ when '.pcf' then return 'application/x-font-pcf'
501
+ when '.pfr' then return 'application/font-tdpfr'
502
+ when '.pgn' then return 'application/x-chess-pgn'
503
+ when '.pgm' then return 'image/x-portable-graymap'
504
+ when '.png' then return 'image/png'
505
+ when '.ppm' then return 'image/x-portable-pixmap'
506
+ when '.pskcxml' then return 'application/pskc+xml'
507
+ when '.pml' then return 'application/vnd.ctc-posml'
508
+ when '.ai' then return 'application/postscript'
509
+ when '.pfa' then return 'application/x-font-type1'
510
+ when '.pbd' then return 'application/vnd.powerbuilder6'
511
+ when '' then return 'application/pgp-encrypted'
512
+ when '.pgp' then return 'application/pgp-signature'
513
+ when '.box' then return 'application/vnd.previewsystems.box'
514
+ when '.ptid' then return 'application/vnd.pvi.ptid1'
515
+ when '.pls' then return 'application/pls+xml'
516
+ when '.str' then return 'application/vnd.pg.format'
517
+ when '.ei6' then return 'application/vnd.pg.osasli'
518
+ when '.dsc' then return 'text/prs.lines.tag'
519
+ when '.psf' then return 'application/x-font-linux-psf'
520
+ when '.qps' then return 'application/vnd.publishare-delta-tree'
521
+ when '.wg' then return 'application/vnd.pmi.widget'
522
+ when '.qxd' then return 'application/vnd.quark.quarkxpress'
523
+ when '.esf' then return 'application/vnd.epson.esf'
524
+ when '.msf' then return 'application/vnd.epson.msf'
525
+ when '.ssf' then return 'application/vnd.epson.ssf'
526
+ when '.qam' then return 'application/vnd.epson.quickanime'
527
+ when '.qfx' then return 'application/vnd.intu.qfx'
528
+ when '.qt' then return 'video/quicktime'
529
+ when '.rar' then return 'application/x-rar-compressed'
530
+ when '.ram' then return 'audio/x-pn-realaudio'
531
+ when '.rmp' then return 'audio/x-pn-realaudio-plugin'
532
+ when '.rsd' then return 'application/rsd+xml'
533
+ when '.rm' then return 'application/vnd.rn-realmedia'
534
+ when '.bed' then return 'application/vnd.realvnc.bed'
535
+ when '.mxl' then return 'application/vnd.recordare.musicxml'
536
+ when '.musicxml' then return 'application/vnd.recordare.musicxml+xml'
537
+ when '.rnc' then return 'application/relax-ng-compact-syntax'
538
+ when '.rdz' then return 'application/vnd.data-vision.rdz'
539
+ when '.rdf' then return 'application/rdf+xml'
540
+ when '.rp9' then return 'application/vnd.cloanto.rp9'
541
+ when '.jisp' then return 'application/vnd.jisp'
542
+ when '.rtf' then return 'application/rtf'
543
+ when '.rtx' then return 'text/richtext'
544
+ when '.link66' then return 'application/vnd.route66.link66+xml'
545
+ when '.rss, .xml' then return 'application/rss+xml'
546
+ when '.shf' then return 'application/shf+xml'
547
+ when '.st' then return 'application/vnd.sailingtracker.track'
548
+ when '.svg' then return 'image/svg+xml'
549
+ when '.sus' then return 'application/vnd.sus-calendar'
550
+ when '.sru' then return 'application/sru+xml'
551
+ when '.setpay' then return 'application/set-payment-initiation'
552
+ when '.setreg' then return 'application/set-registration-initiation'
553
+ when '.sema' then return 'application/vnd.sema'
554
+ when '.semd' then return 'application/vnd.semd'
555
+ when '.semf' then return 'application/vnd.semf'
556
+ when '.see' then return 'application/vnd.seemail'
557
+ when '.snf' then return 'application/x-font-snf'
558
+ when '.spq' then return 'application/scvp-vp-request'
559
+ when '.spp' then return 'application/scvp-vp-response'
560
+ when '.scq' then return 'application/scvp-cv-request'
561
+ when '.scs' then return 'application/scvp-cv-response'
562
+ when '.sdp' then return 'application/sdp'
563
+ when '.etx' then return 'text/x-setext'
564
+ when '.movie' then return 'video/x-sgi-movie'
565
+ when '.ifm' then return 'application/vnd.shana.informed.formdata'
566
+ when '.itp' then return 'application/vnd.shana.informed.formtemplate'
567
+ when '.iif' then return 'application/vnd.shana.informed.interchange'
568
+ when '.ipk' then return 'application/vnd.shana.informed.package'
569
+ when '.tfi' then return 'application/thraud+xml'
570
+ when '.shar' then return 'application/x-shar'
571
+ when '.rgb' then return 'image/x-rgb'
572
+ when '.slt' then return 'application/vnd.epson.salt'
573
+ when '.aso' then return 'application/vnd.accpac.simply.aso'
574
+ when '.imp' then return 'application/vnd.accpac.simply.imp'
575
+ when '.twd' then return 'application/vnd.simtech-mindmapper'
576
+ when '.csp' then return 'application/vnd.commonspace'
577
+ when '.saf' then return 'application/vnd.yamaha.smaf-audio'
578
+ when '.mmf' then return 'application/vnd.smaf'
579
+ when '.spf' then return 'application/vnd.yamaha.smaf-phrase'
580
+ when '.teacher' then return 'application/vnd.smart.teacher'
581
+ when '.svd' then return 'application/vnd.svd'
582
+ when '.rq' then return 'application/sparql-query'
583
+ when '.srx' then return 'application/sparql-results+xml'
584
+ when '.gram' then return 'application/srgs'
585
+ when '.grxml' then return 'application/srgs+xml'
586
+ when '.ssml' then return 'application/ssml+xml'
587
+ when '.skp' then return 'application/vnd.koan'
588
+ when '.sgml' then return 'text/sgml'
589
+ when '.sdc' then return 'application/vnd.stardivision.calc'
590
+ when '.sda' then return 'application/vnd.stardivision.draw'
591
+ when '.sdd' then return 'application/vnd.stardivision.impress'
592
+ when '.smf' then return 'application/vnd.stardivision.math'
593
+ when '.sdw' then return 'application/vnd.stardivision.writer'
594
+ when '.sgl' then return 'application/vnd.stardivision.writer-global'
595
+ when '.sm' then return 'application/vnd.stepmania.stepchart'
596
+ when '.sit' then return 'application/x-stuffit'
597
+ when '.sitx' then return 'application/x-stuffitx'
598
+ when '.sdkm' then return 'application/vnd.solent.sdkm+xml'
599
+ when '.xo' then return 'application/vnd.olpc-sugar'
600
+ when '.au' then return 'audio/basic'
601
+ when '.wqd' then return 'application/vnd.wqd'
602
+ when '.sis' then return 'application/vnd.symbian.install'
603
+ when '.smi' then return 'application/smil+xml'
604
+ when '.xsm' then return 'application/vnd.syncml+xml'
605
+ when '.bdm' then return 'application/vnd.syncml.dm+wbxml'
606
+ when '.xdm' then return 'application/vnd.syncml.dm+xml'
607
+ when '.sv4cpio' then return 'application/x-sv4cpio'
608
+ when '.sv4crc' then return 'application/x-sv4crc'
609
+ when '.sbml' then return 'application/sbml+xml'
610
+ when '.tsv' then return 'text/tab-separated-values'
611
+ when '.tiff' then return 'image/tiff'
612
+ when '.tao' then return 'application/vnd.tao.intent-module-archive'
613
+ when '.tar' then return 'application/x-tar'
614
+ when '.tcl' then return 'application/x-tcl'
615
+ when '.tex' then return 'application/x-tex'
616
+ when '.tfm' then return 'application/x-tex-tfm'
617
+ when '.tei' then return 'application/tei+xml'
618
+ when '.txt' then return 'text/plain'
619
+ when '.dxp' then return 'application/vnd.spotfire.dxp'
620
+ when '.sfs' then return 'application/vnd.spotfire.sfs'
621
+ when '.tsd' then return 'application/timestamped-data'
622
+ when '.tpt' then return 'application/vnd.trid.tpt'
623
+ when '.mxs' then return 'application/vnd.triscape.mxs'
624
+ when '.t' then return 'text/troff'
625
+ when '.tra' then return 'application/vnd.trueapp'
626
+ when '.ttf' then return 'application/x-font-ttf'
627
+ when '.ttl' then return 'text/turtle'
628
+ when '.umj' then return 'application/vnd.umajin'
629
+ when '.uoml' then return 'application/vnd.uoml+xml'
630
+ when '.unityweb' then return 'application/vnd.unity'
631
+ when '.ufd' then return 'application/vnd.ufdl'
632
+ when '.uri' then return 'text/uri-list'
633
+ when '.utz' then return 'application/vnd.uiq.theme'
634
+ when '.ustar' then return 'application/x-ustar'
635
+ when '.uu' then return 'text/x-uuencode'
636
+ when '.vcs' then return 'text/x-vcalendar'
637
+ when '.vcf' then return 'text/x-vcard'
638
+ when '.vcd' then return 'application/x-cdlink'
639
+ when '.vsf' then return 'application/vnd.vsf'
640
+ when '.wrl' then return 'model/vrml'
641
+ when '.vcx' then return 'application/vnd.vcx'
642
+ when '.mts' then return 'model/vnd.mts'
643
+ when '.vtu' then return 'model/vnd.vtu'
644
+ when '.vis' then return 'application/vnd.visionary'
645
+ when '.viv' then return 'video/vnd.vivo'
646
+ when '.ccxml' then return 'application/ccxml+xml,'
647
+ when '.vxml' then return 'application/voicexml+xml'
648
+ when '.src' then return 'application/x-wais-source'
649
+ when '.wbxml' then return 'application/vnd.wap.wbxml'
650
+ when '.wbmp' then return 'image/vnd.wap.wbmp'
651
+ when '.wav' then return 'audio/x-wav'
652
+ when '.davmount' then return 'application/davmount+xml'
653
+ when '.woff' then return 'application/x-font-woff'
654
+ when '.wspolicy' then return 'application/wspolicy+xml'
655
+ when '.webp' then return 'image/webp'
656
+ when '.wtb' then return 'application/vnd.webturbo'
657
+ when '.wgt' then return 'application/widget'
658
+ when '.hlp' then return 'application/winhlp'
659
+ when '.wml' then return 'text/vnd.wap.wml'
660
+ when '.wmls' then return 'text/vnd.wap.wmlscript'
661
+ when '.wmlsc' then return 'application/vnd.wap.wmlscriptc'
662
+ when '.wpd' then return 'application/vnd.wordperfect'
663
+ when '.stf' then return 'application/vnd.wt.stf'
664
+ when '.wsdl' then return 'application/wsdl+xml'
665
+ when '.xbm' then return 'image/x-xbitmap'
666
+ when '.xpm' then return 'image/x-xpixmap'
667
+ when '.xwd' then return 'image/x-xwindowdump'
668
+ when '.der' then return 'application/x-x509-ca-cert'
669
+ when '.fig' then return 'application/x-xfig'
670
+ when '.xhtml' then return 'application/xhtml+xml'
671
+ when '.xml' then return 'application/xml'
672
+ when '.xdf' then return 'application/xcap-diff+xml'
673
+ when '.xenc' then return 'application/xenc+xml'
674
+ when '.xer' then return 'application/patch-ops-error+xml'
675
+ when '.rl' then return 'application/resource-lists+xml'
676
+ when '.rs' then return 'application/rls-services+xml'
677
+ when '.rld' then return 'application/resource-lists-diff+xml'
678
+ when '.xslt' then return 'application/xslt+xml'
679
+ when '.xop' then return 'application/xop+xml'
680
+ when '.xpi' then return 'application/x-xpinstall'
681
+ when '.xspf' then return 'application/xspf+xml'
682
+ when '.xul' then return 'application/vnd.mozilla.xul+xml'
683
+ when '.xyz' then return 'chemical/x-xyz'
684
+ when '.yaml' then return 'text/yaml'
685
+ when '.yang' then return 'application/yang'
686
+ when '.yin' then return 'application/yin+xml'
687
+ when '.zir' then return 'application/vnd.zul'
688
+ when '.zip' then return 'application/zip'
689
+ when '.zmm' then return 'application/vnd.handheld-entertainment+xml'
690
+ when '.zaz' then return 'application/vnd.zzazz.deck+xml'
691
+ end
692
+ return nil
693
+ end
694
+ end
695
+ end
@@ -1,3 +1,3 @@
1
1
  module Caboose
2
- VERSION = '0.7.40'
2
+ VERSION = '0.7.41'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: caboose-cms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.40
4
+ version: 0.7.41
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Barry
@@ -804,6 +804,7 @@ files:
804
804
  - app/models/caboose/media_category.rb
805
805
  - app/models/caboose/menu_block.rb
806
806
  - app/models/caboose/message.rb
807
+ - app/models/caboose/mimetype.rb
807
808
  - app/models/caboose/model_binder.rb
808
809
  - app/models/caboose/modification.rb
809
810
  - app/models/caboose/modification_value.rb