active_frontend 15.0.23 → 15.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c43552cdc2d8aef703446ce327de0112d9419993825892f06424ed08f05af8c2
4
- data.tar.gz: c681e6c898b76126627251ad762c80b76a0d4005b22bc09b9987b1b52ef958b5
3
+ metadata.gz: f047e9b1d4c79fa5903b3ce18b26c11a2dcc84108c15a33dc8f1efe3c6fb56e5
4
+ data.tar.gz: 7e1f65f61538461bfabba0f02586a4f470fb54d9b010ca222a7fb6401046d288
5
5
  SHA512:
6
- metadata.gz: e451e1ab5e078e33dfdb951c3c92328d7aaee06a2cc165d48513a5527080c8aa34ca30191b22b26dc5deef93239afebf44605a9ad876f031b47bcad6268475eb
7
- data.tar.gz: 7454d826d42506548e0b7b01382da38bdf7506ba241e53d09954de133f897c7488b87088888de940d4b25a36be428ca8d5c13d5ee10e6d5fd69cc889c785c90d
6
+ metadata.gz: f797c72363cf6dc3bd1ffacdf349b2b2f247c83f173344e27c2ec127e18a84640b1ec082c5ec70104e0ef17b4c3340f885ab95e68f632dbab22c23e64032e559
7
+ data.tar.gz: 1c4553288c8775c243808c67639009fb81f34824857df78085193ed964844621ef28ace6d66f91c2e4f70095123fe2ab1280bde533436ace01d9bf8b89803703
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActiveFrontend
4
- VERSION ||= '15.0.23'
4
+ VERSION ||= '15.1.0'
5
5
  end
@@ -1,5 +1,6 @@
1
1
  // Table of Contents
2
2
  // ==================================================
3
+ // Options
3
4
  // Animation
4
5
  // Color
5
6
  // Common
@@ -7,6 +8,10 @@
7
8
  // Grid
8
9
  // Progress
9
10
 
11
+ // Options
12
+ // ==================================================
13
+ $pseudo-elements: true;
14
+
10
15
  // Animation
11
16
  // ==================================================
12
17
  $animation-delays: (
@@ -31,21 +31,23 @@
31
31
  vertical-align: middle;
32
32
  white-space: nowrap;
33
33
 
34
- &:hover,
35
- &.active,
36
- &:focus {
37
- background: darkish-color(haze);
38
- box-shadow: inset 0 -2px dark-color(haze);
39
- }
40
- &:active,
41
- &.disabled,
42
- &[disabled] {
43
- background: lightish-color(haze);
44
- box-shadow: none;
45
- color: transparentize(color(black), 0.35);
34
+ @if ($pseudo-elements) {
35
+ &:hover,
36
+ &.active,
37
+ &:focus {
38
+ background: darkish-color(haze);
39
+ box-shadow: inset 0 -2px dark-color(haze);
40
+ }
41
+ &:active,
42
+ &.disabled,
43
+ &[disabled] {
44
+ background: lightish-color(haze);
45
+ box-shadow: none;
46
+ color: transparentize(color(black), 0.35);
47
+ }
48
+ &.disabled,
49
+ &[disabled] { cursor: not-allowed; }
46
50
  }
47
- &.disabled,
48
- &[disabled] { cursor: not-allowed; }
49
51
 
50
52
  .badge,
51
53
  .label {
@@ -73,41 +75,47 @@
73
75
  &.btn-link,
74
76
  &.btn-outline { color: color($name); }
75
77
  &.btn-link {
76
- &:hover,
77
- &.active,
78
- &:focus { color: darkish-color($name); }
79
- &:active,
80
- &.disabled,
81
- &[disabled] { color: lightish-color($name); }
78
+ @if ($pseudo-elements) {
79
+ &:hover,
80
+ &.active,
81
+ &:focus { color: darkish-color($name); }
82
+ &:active,
83
+ &.disabled,
84
+ &[disabled] { color: lightish-color($name); }
85
+ }
82
86
  }
83
87
  &.btn-outline {
84
88
  border-color: color($name);
85
89
 
90
+ @if ($pseudo-elements) {
91
+ &:hover,
92
+ &:active,
93
+ &.active,
94
+ &:focus,
95
+ &.disabled,
96
+ &[disabled] {
97
+ border-color: darker-color($name);
98
+ color: text-color-on($name);
99
+ }
100
+ &.disabled,
101
+ &[disabled] { color: color($name); }
102
+ }
103
+ }
104
+
105
+ @if ($pseudo-elements) {
86
106
  &:hover,
87
- &:active,
88
107
  &.active,
89
- &:focus,
108
+ &:focus {
109
+ background: darkish-color($name);
110
+ box-shadow: inset 0 -2px dark-color($name);
111
+ }
112
+ &:active,
90
113
  &.disabled,
91
114
  &[disabled] {
92
- border-color: darker-color($name);
93
- color: text-color-on($name);
115
+ background: lightish-color($name);
116
+ box-shadow: none;
117
+ color: transparentize(text-color-on($name), 0.35);
94
118
  }
95
- &.disabled,
96
- &[disabled] { color: color($name); }
97
- }
98
-
99
- &:hover,
100
- &.active,
101
- &:focus {
102
- background: darkish-color($name);
103
- box-shadow: inset 0 -2px dark-color($name);
104
- }
105
- &:active,
106
- &.disabled,
107
- &[disabled] {
108
- background: lightish-color($name);
109
- box-shadow: none;
110
- color: transparentize(text-color-on($name), 0.35);
111
119
  }
112
120
  }
113
121
  }
@@ -118,22 +126,26 @@
118
126
  .btn-outline {
119
127
  background: color(transparent);
120
128
 
121
- .disabled,
122
- &[disabled] { background: inherit; }
129
+ @if ($pseudo-elements) {
130
+ .disabled,
131
+ &[disabled] { background: inherit; }
132
+ }
123
133
  }
124
134
  .btn-link {
125
135
  border-color: color(transparent);
126
136
  border-radius: 0;
127
137
  padding: 0;
128
138
 
129
- &:hover,
130
- &:active,
131
- &.active,
132
- &:focus,
133
- &.disabled,
134
- &[disabled] {
135
- background: inherit;
136
- box-shadow: none;
139
+ @if ($pseudo-elements) {
140
+ &:hover,
141
+ &:active,
142
+ &.active,
143
+ &:focus,
144
+ &.disabled,
145
+ &[disabled] {
146
+ background: inherit;
147
+ box-shadow: none;
148
+ }
137
149
  }
138
150
  }
139
151
  .btn-block {
@@ -32,14 +32,18 @@
32
32
  border-radius: 999px;
33
33
  width: 6px;
34
34
  }
35
- &::-webkit-scrollbar:hover { background: rgba(color(transparent), 0.15); }
35
+ @if ($pseudo-elements) {
36
+ &::-webkit-scrollbar:hover { background: rgba(color(transparent), 0.15); }
37
+ }
36
38
  &::-webkit-scrollbar-thumb {
37
39
  background: rgba(color(transparent), 0.5);
38
40
  border-radius: 999px;
39
41
  }
40
- &::-webkit-scrollbar-thumb:active {
41
- background: rgba(color(transparent), 0.6);
42
- border-radius: 999px;
42
+ @if ($pseudo-elements) {
43
+ &::-webkit-scrollbar-thumb:active {
44
+ background: rgba(color(transparent), 0.6);
45
+ border-radius: 999px;
46
+ }
43
47
  }
44
48
  }
45
49
 
@@ -372,9 +372,11 @@ textarea {
372
372
  text-align: center;
373
373
  width: 100%;
374
374
 
375
- &:hover {
376
- background: color(haze);
377
- box-shadow: none !important;
375
+ @if ($pseudo-elements) {
376
+ &:hover {
377
+ background: color(haze);
378
+ box-shadow: none !important;
379
+ }
378
380
  }
379
381
  }
380
382
  input[type='checkbox'],
@@ -426,7 +428,9 @@ textarea {
426
428
  background: color(light-black);
427
429
  box-shadow: inset 0 2px 0 0 dark-color(light-black);
428
430
 
429
- &:hover { background: color(dark-black); }
431
+ @if ($pseudo-elements) {
432
+ &:hover { background: color(dark-black); }
433
+ }
430
434
  }
431
435
 
432
436
  input[type='checkbox'],
@@ -439,7 +443,9 @@ textarea {
439
443
  background: color(light-haze);
440
444
  box-shadow: inset 0 2px 0 0 darker-color(light-haze);
441
445
 
442
- &:hover { background: color(dark-haze); }
446
+ @if ($pseudo-elements) {
447
+ &:hover { background: color(dark-haze); }
448
+ }
443
449
  }
444
450
 
445
451
  input[type='checkbox'],
@@ -30,14 +30,16 @@ ul {
30
30
  > li:nth-child(even) { background: color(haze); }
31
31
  }
32
32
  }
33
- .list-hover {
34
- > li:hover { background: color(haze); }
33
+ @if ($pseudo-elements) {
34
+ .list-hover {
35
+ > li:hover { background: color(haze); }
35
36
 
36
- &.dark {
37
- > li:hover { background: background-hover-color(black); }
38
- }
39
- &.light {
40
- > li:hover { background: background-hover-color(haze); }
37
+ &.dark {
38
+ > li:hover { background: background-hover-color(black); }
39
+ }
40
+ &.light {
41
+ > li:hover { background: background-hover-color(haze); }
42
+ }
41
43
  }
42
44
  }
43
45
  .list-inline {
@@ -51,11 +51,13 @@ svg:not(:root) {
51
51
 
52
52
  &.dark { border-color: color(dark-black); }
53
53
  }
54
- @each $name, $color in $colors {
55
- .img-avatar-hover-#{$name} {
56
- &:hover,
57
- &:active,
58
- &:focus { border-color: $color; }
54
+ @if ($pseudo-elements) {
55
+ @each $name, $color in $colors {
56
+ .img-avatar-hover-#{$name} {
57
+ &:hover,
58
+ &:active,
59
+ &:focus { border-color: $color; }
60
+ }
59
61
  }
60
62
  }
61
63
 
@@ -64,46 +64,48 @@ thead {
64
64
  }
65
65
  }
66
66
  }
67
- .table-hover {
68
- tbody {
69
- tr:hover {
70
- td { background: color(haze); }
71
- }
72
- }
73
-
74
- &.dark {
67
+ @if ($pseudo-elements) {
68
+ .table-hover {
75
69
  tbody {
76
70
  tr:hover {
77
- td { background: background-hover-color(black); }
71
+ td { background: color(haze); }
78
72
  }
79
73
  }
80
- }
81
- &.light {
82
- tbody {
83
- tr:hover {
84
- td { background: background-hover-color(haze); }
74
+
75
+ &.dark {
76
+ tbody {
77
+ tr:hover {
78
+ td { background: background-hover-color(black); }
79
+ }
85
80
  }
86
81
  }
87
- }
88
- }
89
- .table-highlight {
90
- tbody {
91
- tr {
92
- td:hover { background: color(haze); }
82
+ &.light {
83
+ tbody {
84
+ tr:hover {
85
+ td { background: background-hover-color(haze); }
86
+ }
87
+ }
93
88
  }
94
89
  }
95
-
96
- &.dark {
90
+ .table-highlight {
97
91
  tbody {
98
92
  tr {
99
- td:hover { background: background-hover-color(black); }
93
+ td:hover { background: color(haze); }
100
94
  }
101
95
  }
102
- }
103
- &.light {
104
- tbody {
105
- tr {
106
- td:hover { background: background-hover-color(haze); }
96
+
97
+ &.dark {
98
+ tbody {
99
+ tr {
100
+ td:hover { background: background-hover-color(black); }
101
+ }
102
+ }
103
+ }
104
+ &.light {
105
+ tbody {
106
+ tr {
107
+ td:hover { background: background-hover-color(haze); }
108
+ }
107
109
  }
108
110
  }
109
111
  }
@@ -160,14 +160,16 @@ sup { vertical-align: text-top; }
160
160
  // ==================================================
161
161
  @each $name, $color in $colors {
162
162
  .text-color-#{$name} { color: $color; }
163
- .text-color-hover-#{$name} {
164
- &:hover { color: $color; }
165
- }
166
- .text-color-focus-#{$name} {
167
- &:focus { color: $color; }
168
- }
169
- .text-color-active-#{$name} {
170
- &:active { color: $color; }
163
+ @if ($pseudo-elements) {
164
+ .text-color-hover-#{$name} {
165
+ &:hover { color: $color; }
166
+ }
167
+ .text-color-focus-#{$name} {
168
+ &:focus { color: $color; }
169
+ }
170
+ .text-color-active-#{$name} {
171
+ &:active { color: $color; }
172
+ }
171
173
  }
172
174
  }
173
175
 
@@ -15,19 +15,23 @@
15
15
 
16
16
  &.divider { margin: 0 5px; }
17
17
 
18
- > a {
19
- &:hover,
20
- &:active,
21
- &:focus { color: color(primary); }
18
+ @if ($pseudo-elements) {
19
+ > a {
20
+ &:hover,
21
+ &:active,
22
+ &:focus { color: color(primary); }
23
+ }
22
24
  }
23
25
  }
24
26
 
25
- @each $name, $color in $colors-global {
26
- &.#{$name} {
27
- > li {
28
- &:hover,
29
- &:active,
30
- &:focus { color: color($name); }
27
+ @if ($pseudo-elements) {
28
+ @each $name, $color in $colors-global {
29
+ &.#{$name} {
30
+ > li {
31
+ &:hover,
32
+ &:active,
33
+ &:focus { color: color($name); }
34
+ }
31
35
  }
32
36
  }
33
37
  }
@@ -52,8 +52,10 @@
52
52
  display: inline-block;
53
53
  margin-top: 5px;
54
54
 
55
- &:hover,
56
- &:active { color: color(primary); }
55
+ @if ($pseudo-elements) {
56
+ &:hover,
57
+ &:active { color: color(primary); }
58
+ }
57
59
  }
58
60
  }
59
61
  .calendar-header-left {
@@ -50,11 +50,13 @@
50
50
  top: 0;
51
51
  width: 70px;
52
52
 
53
- &:hover,
54
- &:active,
55
- &:focus {
56
- opacity: 1;
57
- outline: none;
53
+ @if ($pseudo-elements) {
54
+ &:hover,
55
+ &:active,
56
+ &:focus {
57
+ opacity: 1;
58
+ outline: none;
59
+ }
58
60
  }
59
61
 
60
62
  &.right {
@@ -20,12 +20,14 @@
20
20
  padding: 8px 6px;
21
21
  text-align: center;
22
22
  }
23
- th:not(.dow) {
24
- &:hover,
25
- &:focus {
26
- background: color(gray);
27
- color: color(white);
28
- cursor: pointer;
23
+ @if ($pseudo-elements) {
24
+ th:not(.dow) {
25
+ &:hover,
26
+ &:focus {
27
+ background: color(gray);
28
+ color: color(white);
29
+ cursor: pointer;
30
+ }
29
31
  }
30
32
  }
31
33
  td {
@@ -35,32 +37,34 @@
35
37
  background: color(light-black);
36
38
  color: color(primary);
37
39
  }
38
- &.day,
39
- &.today {
40
- &:hover,
41
- &:focus {
42
- background: color(gray);
43
- color: color(white);
44
- cursor: pointer;
45
- }
46
- &:active,
47
- &.active {
48
- background: color(primary);
49
- color: color(white);
40
+ @if ($pseudo-elements) {
41
+ &.day,
42
+ &.today {
43
+ &:hover,
44
+ &:focus {
45
+ background: color(gray);
46
+ color: color(white);
47
+ cursor: pointer;
48
+ }
49
+ &:active,
50
+ &.active {
51
+ background: color(primary);
52
+ color: color(white);
53
+ }
50
54
  }
51
- }
52
- &.old,
53
- &.new {
54
- color: color(light-gray);
55
+ &.old,
56
+ &.new {
57
+ color: color(light-gray);
55
58
 
56
- &:hover,
57
- &:focus { color: color(white); }
58
- }
59
- &.disabled {
60
- background: color(transparent) !important;
61
- color: color(dark-gray) !important;
62
- cursor: not-allowed !important;
63
- text-decoration: line-through;
59
+ &:hover,
60
+ &:focus { color: color(white); }
61
+ }
62
+ &.disabled {
63
+ background: color(transparent) !important;
64
+ color: color(dark-gray) !important;
65
+ cursor: not-allowed !important;
66
+ text-decoration: line-through;
67
+ }
64
68
  }
65
69
 
66
70
  span {
@@ -71,24 +75,26 @@
71
75
  padding: 13px 0;
72
76
  width: 23%;
73
77
 
74
- &:hover,
75
- &.focus,
76
- &.focused {
77
- background: color(gray);
78
- color: color(white);
79
- cursor: pointer;
80
- }
81
- &:active,
82
- &.active,
83
- &.focused {
84
- background: color(primary);
85
- color: color(white);
86
- }
87
- &.disabled {
88
- background: color(transparent) !important;
89
- color: color(dark-gray) !important;
90
- cursor: not-allowed !important;
91
- text-decoration: line-through;
78
+ @if ($pseudo-elements) {
79
+ &:hover,
80
+ &.focus,
81
+ &.focused {
82
+ background: color(gray);
83
+ color: color(white);
84
+ cursor: pointer;
85
+ }
86
+ &:active,
87
+ &.active,
88
+ &.focused {
89
+ background: color(primary);
90
+ color: color(white);
91
+ }
92
+ &.disabled {
93
+ background: color(transparent) !important;
94
+ color: color(dark-gray) !important;
95
+ cursor: not-allowed !important;
96
+ text-decoration: line-through;
97
+ }
92
98
  }
93
99
  }
94
100
  }
@@ -127,12 +127,14 @@
127
127
  border-radius: border-radius(b);
128
128
  padding: 8px 10px;
129
129
 
130
- &:hover,
131
- &:focus { background: color(haze); }
132
- &:active {
133
- background: color(primary);
134
- border-color: darker-color(primary);
135
- color: color(white);
130
+ @if ($pseudo-elements) {
131
+ &:hover,
132
+ &:focus { background: color(haze); }
133
+ &:active {
134
+ background: color(primary);
135
+ border-color: darker-color(primary);
136
+ color: color(white);
137
+ }
136
138
  }
137
139
  }
138
140
 
@@ -153,8 +155,10 @@
153
155
  background: color(black);
154
156
  border-color: dark-color(black);
155
157
 
156
- &:hover,
157
- &:focus { background: color(light-black); }
158
+ @if ($pseudo-elements) {
159
+ &:hover,
160
+ &:focus { background: color(light-black); }
161
+ }
158
162
  }
159
163
  }
160
164
  }
@@ -163,8 +167,10 @@
163
167
  > a {
164
168
  background: color(white);
165
169
 
166
- &:hover,
167
- &:focus { background: color(light-haze); }
170
+ @if ($pseudo-elements) {
171
+ &:hover,
172
+ &:focus { background: color(light-haze); }
173
+ }
168
174
  }
169
175
  }
170
176
  }
@@ -208,9 +214,11 @@
208
214
  border-bottom: 2px solid color(transparent);
209
215
  padding-bottom: 15px;
210
216
 
211
- &:hover,
212
- &:active,
213
- &:focus { border-color: inherit; }
217
+ @if ($pseudo-elements) {
218
+ &:hover,
219
+ &:active,
220
+ &:focus { border-color: inherit; }
221
+ }
214
222
  }
215
223
 
216
224
  &.pull-right {
@@ -27,18 +27,20 @@
27
27
  vertical-align: middle;
28
28
  width: 1%;
29
29
 
30
- &:hover,
31
- &.active,
32
- &:active,
33
- &:focus { color: color(primary); }
34
-
35
- &.primary {
30
+ @if ($pseudo-elements) {
36
31
  &:hover,
37
32
  &.active,
38
33
  &:active,
39
- &:focus {
40
- background: darkish-color(primary);
41
- color: color(white);
34
+ &:focus { color: color(primary); }
35
+
36
+ &.primary {
37
+ &:hover,
38
+ &.active,
39
+ &:active,
40
+ &:focus {
41
+ background: darkish-color(primary);
42
+ color: color(white);
43
+ }
42
44
  }
43
45
  }
44
46
 
@@ -27,10 +27,15 @@
27
27
  text-align: center;
28
28
  }
29
29
 
30
- a { background: color(haze); }
31
- a:hover,
32
- a:focus { background: darkish-color(haze); }
33
- a:active { background: lightish-color(haze); }
30
+ a {
31
+ background: color(haze);
32
+
33
+ @if ($pseudo-elements) {
34
+ &:hover,
35
+ &:focus { background: darkish-color(haze); }
36
+ &:active { background: lightish-color(haze); }
37
+ }
38
+ }
34
39
 
35
40
  &.active {
36
41
  background: color(primary);
@@ -62,18 +67,28 @@
62
67
  &.white { background: color(transparent); }
63
68
  &.dark {
64
69
  li {
65
- a { background: color(light-black); }
66
- a:hover,
67
- a:focus { background: darkish-color(light-black); }
68
- a:active { background: lightish-color(light-black); }
70
+ a {
71
+ background: color(light-black);
72
+
73
+ @if ($pseudo-elements) {
74
+ &:hover,
75
+ &:focus { background: darkish-color(light-black); }
76
+ &:active { background: lightish-color(light-black); }
77
+ }
78
+ }
69
79
  }
70
80
  }
71
81
  &.light {
72
82
  li {
73
- a { background: color(dark-haze); }
74
- a:hover,
75
- a:focus { background: darkish-color(dark-haze); }
76
- a:active { background: lightish-color(dark-haze); }
83
+ a {
84
+ background: color(dark-haze);
85
+
86
+ @if ($pseudo-elements) {
87
+ &:hover,
88
+ &:focus { background: darkish-color(dark-haze); }
89
+ &:active { background: lightish-color(dark-haze); }
90
+ }
91
+ }
77
92
  }
78
93
  }
79
94
  }
@@ -23,9 +23,11 @@
23
23
  color: color(gray);
24
24
  font-size: 24px;
25
25
 
26
- &:hover,
27
- &:active,
28
- &:focus { color: color(primary); }
26
+ @if ($pseudo-elements) {
27
+ &:hover,
28
+ &:active,
29
+ &:focus { color: color(primary); }
30
+ }
29
31
  }
30
32
  }
31
33
  }
@@ -351,10 +351,12 @@
351
351
  a {
352
352
  i { display: none; }
353
353
 
354
- &.checked,
355
- &:hover,
356
- &:active,
357
- &:focus { color: color(primary); }
354
+ @if ($pseudo-elements) {
355
+ &.checked,
356
+ &:hover,
357
+ &:active,
358
+ &:focus { color: color(primary); }
359
+ }
358
360
  }
359
361
  }
360
362
  }
@@ -371,7 +373,9 @@
371
373
  padding: 0;
372
374
  width: 20px;
373
375
 
374
- &:hover { border: 1px solid color(black); }
376
+ @if ($pseudo-elements) {
377
+ &:hover { border: 1px solid color(black); }
378
+ }
375
379
  }
376
380
  }
377
381
  }
@@ -482,19 +486,21 @@
482
486
  display: block !important;
483
487
  padding: 3px;
484
488
 
485
- &:hover,
486
- &.active,
487
- &:active,
488
- &:focus {
489
- background: #428bca;
490
- clear: both;
491
- color: color(white);
492
- cursor: pointer;
493
- display: block;
494
- font-weight: text-weight(normal);
495
- outline: 0;
496
- text-decoration: none;
497
- white-space: nowrap;
489
+ @if ($pseudo-elements) {
490
+ &:hover,
491
+ &.active,
492
+ &:active,
493
+ &:focus {
494
+ background: #428bca;
495
+ clear: both;
496
+ color: color(white);
497
+ cursor: pointer;
498
+ display: block;
499
+ font-weight: text-weight(normal);
500
+ outline: 0;
501
+ text-decoration: none;
502
+ white-space: nowrap;
503
+ }
498
504
  }
499
505
  }
500
506
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_frontend
3
3
  version: !ruby/object:Gem::Version
4
- version: 15.0.23
4
+ version: 15.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juan Gomez
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-12-05 00:00:00.000000000 Z
11
+ date: 2017-12-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails