bullet_train 1.2.19 → 1.2.21

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: 71ca16fcf2593534d2e1bbf6c1c94d6954b4a69c9d38133070979d8cb3335b90
4
- data.tar.gz: b15298104821524a9b8a5e2667110967fa1f8a473dc3a10c21b845307fa29fe7
3
+ metadata.gz: aded6e1793584701eb001f64681e06d155528f81465185b23bc3f5265c3bcec7
4
+ data.tar.gz: e496895bf0a74a0470b3aae6954dbeb19240467892fa4b9d655318faf17b93e1
5
5
  SHA512:
6
- metadata.gz: 1da4a44accbd8e7409214438acf2d144cc86e44e71fccc6c1fb12db404ff75408f26cad0d4d0125884fd8b73cd1981a377a05e0b297f944f89e531d3bec90d4c
7
- data.tar.gz: 8dd3067e1f9783195b104bc6d1b1fc08d5f3c4269f4c1687b72eed99ae4fd037232685c325e803961c55fe8f4ce519790d9ce3d8c9e99c71c1ab9999bb0119d9
6
+ metadata.gz: 6770a9c6974333bc0c21e3aaa7d8ef07dbb7d7f89dd34f857304f36df0357ccffe56b977247c028531277ae12e2a87b793aa0ccae31691fed7a7a2ae293c8a01
7
+ data.tar.gz: 382f88ff873e58f3ca8bb4b4d491b5fec91d99a2e317279d381fa61e165f2afaa0cd50db132ffc86be241b3fd802ded9dd9b1d6e29a9768c7c09ed0caf6a5942
@@ -73,11 +73,7 @@ module Records::Base
73
73
  end
74
74
 
75
75
  def seeding?
76
- rake_tasks = ObjectSpace.each_object(Rake::Task)
77
- return false if rake_tasks.count.zero?
78
-
79
- db_seed_task = rake_tasks.find { |task| task.name.match?(/^db:seed$/) }
80
- db_seed_task.already_invoked
76
+ Rake::Task.task_defined?("db:seed") && Rake::Task["db:seed"].already_invoked
81
77
  end
82
78
 
83
79
  # TODO This should really be in the API package and included from there.
@@ -1,12 +1,7 @@
1
- <%= render 'account/shared/page' do |p| %>
2
- <% p.content_for :title, t('.section') %>
3
- <% p.content_for :body do %>
4
- <%= render 'account/shared/box', divider: true do |p| %>
5
- <% p.content_for :title, t('.header') %>
6
- <% p.content_for :description, t('.description') %>
7
- <% p.content_for :body do %>
8
- <%= render 'form', invitation: @invitation %>
9
- <% end %>
10
- <% end %>
1
+ <%= render 'account/shared/page' do |page| %>
2
+ <% page.title t('.section') %>
3
+ <% page.body.render 'account/shared/box', divider: true do |box| %>
4
+ <% box.t :description, title: '.header' %>
5
+ <% box.body.render 'form', invitation: @invitation %>
11
6
  <% end %>
12
7
  <% end %>
@@ -1,6 +1,6 @@
1
- <%= render 'account/shared/workflow/box' do |p| %>
2
- <% p.content_for :title, t(".join_team") %>
3
- <% p.content_for :body do %>
1
+ <%= render 'account/shared/workflow/box' do |box| %>
2
+ <% box.title t(".join_team") %>
3
+ <% box.body do %>
4
4
  <div class="space-y">
5
5
  <% if !@invitation.is_for?(current_user) %>
6
6
  <p><%= raw t('.has_invited', user_name: @invitation.from_membership.name) %></p>
@@ -3,14 +3,14 @@
3
3
  <% hide_back ||= false %>
4
4
 
5
5
  <%= updates_for context, :memberships do %>
6
- <%= render 'account/shared/box' do |p| %>
7
- <% p.content_for :title, t(".contexts.#{context.class.name.underscore}.header") %>
8
- <% p.content_for :description do %>
6
+ <%= render 'account/shared/box' do |box| %>
7
+ <% box.title t(".contexts.#{context.class.name.underscore}.header") %>
8
+ <% box.description do %>
9
9
  <%= raw t(".contexts.#{context.class.name.underscore}.#{@memberships.any? ? 'description' : 'description_empty'}") %>
10
10
  <%= render "shared/limits/index", model: @memberships.model %>
11
11
  <% end %>
12
12
 
13
- <% p.content_for :table do %>
13
+ <% box.table do %>
14
14
  <% if @memberships.any? %>
15
15
  <table class="table">
16
16
  <thead>
@@ -29,7 +29,7 @@
29
29
  <% end %>
30
30
 
31
31
  <% unless hide_actions %>
32
- <% p.content_for :actions do %>
32
+ <% box.actions do %>
33
33
  <%= link_to t('invitations.buttons.new'), new_account_team_invitation_path(@team, cancel_path: account_team_memberships_path(@team)), class: "#{first_button_primary}" %>
34
34
  <%= link_to t('global.buttons.back'), [:account, context], class: "#{first_button_primary} back" unless hide_back %>
35
35
  <% end %>
@@ -1,8 +1,8 @@
1
1
  <%= render 'account/shared/menu/item', {
2
2
  url: main_app.polymorphic_path([:account, current_team, :memberships]),
3
3
  label: t('memberships.navigation.label'),
4
- } do |p| %>
5
- <% p.content_for :icon do %>
4
+ } do |item| %>
5
+ <% item.icon do %>
6
6
  <i class="<%= t('memberships.navigation.icon') %>"></i>
7
7
  <% end %>
8
8
  <% end %>
@@ -1,13 +1,13 @@
1
1
  <% context ||= @team %>
2
2
  <% hide_actions ||= false %>
3
3
 
4
- <%= render 'account/shared/box' do |p| %>
5
- <% p.content_for :title, t("memberships.tombstones.contexts.#{context.class.name.underscore}.header") %>
6
- <% p.content_for :description do %>
4
+ <%= render 'account/shared/box' do |box| %>
5
+ <% box.title t("memberships.tombstones.contexts.#{context.class.name.underscore}.header") %>
6
+ <% box.description do %>
7
7
  <%= raw t("memberships.tombstones.contexts.#{context.class.name.underscore}.#{memberships.any? ? 'description' : 'description_empty'}") %>
8
8
  <% end %>
9
9
 
10
- <% p.content_for :body do %>
10
+ <% box.body do %>
11
11
  <% if memberships.any? %>
12
12
  <table class="table">
13
13
  <thead>
@@ -1,21 +1,15 @@
1
- <%= render 'account/shared/page' do |p| %>
2
- <% p.content_for :title, t('.section') %>
3
- <% p.content_for :body do %>
4
- <%= render 'account/shared/box', divider: true do |p| %>
5
- <% p.content_for :title, t('.header') %>
6
- <% p.content_for :description, t('.description') %>
7
- <% p.content_for :body do %>
8
- <%= render 'form', membership: @membership %>
9
- <% end %>
1
+ <%= render 'account/shared/page' do |page| %>
2
+ <% page.title t('.section') %>
3
+ <% page.body do %>
4
+ <%= render 'account/shared/box', divider: true do |box| %>
5
+ <% box.t :description, title: '.header' %>
6
+ <% box.body.render 'form', membership: @membership %>
10
7
  <% end %>
11
8
 
12
9
  <% if can? :destroy, @membership %>
13
- <%= render 'account/shared/box', divider: true do |p| %>
14
- <% p.content_for :title, t('.remove_header') %>
15
- <% p.content_for :description, t('.remove_description') %>
16
- <% p.content_for :body do %>
17
- <%= button_to t('.buttons.destroy'), [:account, @membership], method: :delete, data: { confirm: t('.buttons.confirmations.destroy') }, class: 'button' %>
18
- <% end %>
10
+ <%= render 'account/shared/box', divider: true do |box| %>
11
+ <% box.t title: '.remove_header', description: '.remove_description' %>
12
+ <% box.body.button_to t('.buttons.destroy'), [:account, @membership], method: :delete, data: { confirm: t('.buttons.confirmations.destroy') }, class: 'button' %>
19
13
  <% end %>
20
14
  <% end %>
21
15
  <% end %>
@@ -1,6 +1,6 @@
1
- <%= render 'account/shared/page' do |p| %>
2
- <% p.content_for :title, t('.section') %>
3
- <% p.content_for :body do %>
1
+ <%= render 'account/shared/page' do |page| %>
2
+ <% page.title t('.section') %>
3
+ <% page.body do %>
4
4
  <% if @memberships.current_and_invited.any? %>
5
5
  <%= render 'index' do %>
6
6
  <%= render @memberships.current_and_invited.includes(:user) %>
@@ -1,8 +1,8 @@
1
- <%= render 'account/shared/page' do |p| %>
2
- <% p.content_for :title, t('.section') %>
3
- <% p.content_for :body do %>
4
- <%= render 'account/shared/box', divider: true do |p| %>
5
- <% p.content_for :title do %>
1
+ <%= render 'account/shared/page' do |page| %>
2
+ <% page.title t('.section') %>
3
+ <% page.body do %>
4
+ <%= render 'account/shared/box', divider: true do |box| %>
5
+ <% box.title do %>
6
6
  <% if @membership.unclaimed? %>
7
7
  <%= t('.invitation_header') %>
8
8
  <% elsif @membership.tombstone? %>
@@ -12,16 +12,14 @@
12
12
  <% end %>
13
13
  <% end %>
14
14
 
15
- <% p.content_for :description do %>
16
- <%= t('.description') %>
17
- <% end %>
15
+ <% box.t :description %>
18
16
 
19
- <% p.content_for :body do %>
17
+ <% box.body do %>
20
18
  <% with_attribute_settings object: @membership, strategy: :label do %>
21
19
  <%= render 'shared/attributes/text', attribute: :name %>
22
- <%= render 'shared/attributes/base' do |p| %>
23
- <% p.content_for :heading, t('.fields.role_ids.heading') %>
24
- <% p.content_for :body do %>
20
+ <%= render 'shared/attributes/base' do |base| %>
21
+ <% base.heading t('.fields.role_ids.heading') %>
22
+ <% base.body do %>
25
23
  <% if @membership.assignable_roles.any? %>
26
24
  <%= @membership.assignable_roles.map { |role| t(".fields.role_ids.options.#{role.key}.label") }.to_sentence %>
27
25
  <% else %>
@@ -33,7 +31,7 @@
33
31
  <%# 🚅 super scaffolding will insert new fields above this line. %>
34
32
  <% end %>
35
33
 
36
- <% p.content_for :actions do %>
34
+ <% box.actions do %>
37
35
  <% if @membership.tombstone? %>
38
36
  <%= link_to t('.buttons.reinvite'), [:reinvite, :account, @membership], class: first_button_primary, method: :post, data: {confirm: t('.buttons.confirmations.reinvite', membership_name: @membership.name)} if can? :edit, @membership %>
39
37
  <% end %>
@@ -53,7 +51,6 @@
53
51
 
54
52
  <%= link_to t('global.buttons.back'), [:account, @team, :memberships], class: first_button_primary %>
55
53
  <% end %>
56
-
57
54
  <% end %>
58
55
 
59
56
  <%= render 'account/scaffolding/completely_concrete/tangible_things/index', tangible_things: @membership.scaffolding_completely_concrete_tangible_things, context: @membership if @membership.scaffolding_completely_concrete_tangible_things.any? %>
@@ -1,8 +1,8 @@
1
1
  <% @title = t('.header') %>
2
2
 
3
- <%= render 'account/shared/workflow/box' do |p| %>
4
- <% p.content_for :title, @title %>
5
- <% p.content_for :body do %>
3
+ <%= render 'account/shared/workflow/box' do |box| %>
4
+ <% box.title @title %>
5
+ <% box.body do %>
6
6
  <% within_fields_namespace(:self) do %>
7
7
  <%= form_for @user, url: account_onboarding_user_detail_path(@user), method: :put, html: {class: 'form'} do |f| %>
8
8
  <%= render 'account/shared/forms/errors', form: f %>
@@ -1,8 +1,8 @@
1
1
  <% @title = t('.header') %>
2
2
 
3
- <%= render 'account/shared/workflow/box' do |p| %>
4
- <% p.content_for :title, @title %>
5
- <% p.content_for :body do %>
3
+ <%= render 'account/shared/workflow/box' do |box| %>
4
+ <% box.title @title %>
5
+ <% box.body do %>
6
6
  <% within_fields_namespace(:self) do %>
7
7
  <%= form_for @user, url: account_onboarding_user_email_path(@user), method: :put, html: {class: 'form'} do |f| %>
8
8
  <% if @email_taken %>
@@ -13,7 +13,6 @@
13
13
  <% end %>
14
14
 
15
15
  <%= render "account/teams/fields", team: team, form: form %>
16
- <%# 🚅 super scaffolding will insert new fields above this line. %>
17
16
  <% end %>
18
17
 
19
18
  <div class="buttons">
@@ -1,8 +1,8 @@
1
1
  <%= render 'account/shared/menu/item', {
2
2
  url: main_app.polymorphic_path([:account, current_team]),
3
3
  label: t('menus.main.labels.dashboard'),
4
- } do |p| %>
5
- <% p.content_for :icon do %>
4
+ } do |item| %>
5
+ <% item.icon do %>
6
6
  <i class="fal fa-home-lg-alt ti ti-home"></i>
7
7
  <% end %>
8
8
  <% end %>
@@ -1,3 +1,3 @@
1
- <%= render 'account/shared/team', link_url: [:account, team], memberships: team.memberships.current_and_invited.first(10) do |p| %>
2
- <% p.content_for :name, team.name %>
1
+ <%= render 'account/shared/team', link_url: [:account, team], memberships: team.memberships.current_and_invited.first(10) do |p| %>
2
+ <% p.name team.name %>
3
3
  <% end %>
@@ -1,12 +1,7 @@
1
- <%= render 'account/shared/page' do |p| %>
2
- <% p.content_for :title, t('.section') %>
3
- <% p.content_for :body do %>
4
- <%= render 'account/shared/box', divider: true do |p| %>
5
- <% p.content_for :title, t('.header') %>
6
- <% p.content_for :description, t('.description') %>
7
- <% p.content_for :body do %>
8
- <%= render 'form', team: @team %>
9
- <% end %>
10
- <% end %>
1
+ <%= render 'account/shared/page' do |page| %>
2
+ <% page.title t('.section') %>
3
+ <% page.body.render 'account/shared/box', divider: true do |box| %>
4
+ <% box.t :description, title: '.header' %>
5
+ <% box.body.render 'form', team: @team %>
11
6
  <% end %>
12
7
  <% end %>
@@ -1,8 +1,6 @@
1
- <%= render 'account/shared/page' do |p| %>
2
- <% p.content_for :title, t('.section') %>
3
- <% p.content_for :body do %>
4
- <%= render 'index', creative_concepts: @creative_concepts do %>
5
- <%= render @teams %>
6
- <% end %>
1
+ <%= render 'account/shared/page' do |page| %>
2
+ <% page.title t('.section') %>
3
+ <% page.body.render 'index', creative_concepts: @creative_concepts do %>
4
+ <%= render @teams %>
7
5
  <% end %>
8
6
  <% end %>
@@ -6,9 +6,9 @@ else
6
6
  end
7
7
  %>
8
8
 
9
- <%= render 'account/shared/workflow/box' do |p| %>
10
- <% p.content_for :title, @title %>
11
- <% p.content_for :body do %>
9
+ <%= render 'account/shared/workflow/box' do |box| %>
10
+ <% box.title @title %>
11
+ <% box.body do %>
12
12
  <%= form_with model: @team, url: [:account, @team], local: true, class: 'form' do |form| %>
13
13
  <%= render 'account/shared/notices' %>
14
14
  <%= render 'account/shared/forms/errors', form: form %>
@@ -1,18 +1,15 @@
1
- <%= render 'account/shared/page' do |p| %>
2
- <% p.content_for :title, t('.section') %>
3
- <% p.content_for :body do %>
1
+ <%= render 'account/shared/page' do |page| %>
2
+ <% page.title t('.section') %>
3
+ <% page.body do %>
4
4
  <%= form_for [:account, @user] do |form| %>
5
5
  <%= render 'account/shared/forms/errors', form: form %>
6
6
  <% end if @user.errors.any? %>
7
7
 
8
8
  <div class="grid grid-cols-1 gap-y gap-x-8 lg:grid-cols-2">
9
9
  <div class="xl:col-span-1 space-y-8">
10
- <%= render 'account/shared/box', divider: true do |p| %>
11
- <% p.content_for :title, t('.profile.header') %>
12
- <% p.content_for :description, t('.profile.description') %>
13
- <% p.content_for :body do %>
14
- <%= render "account/users/form", user: @user %>
15
- <% end %>
10
+ <%= render 'account/shared/box', divider: true do |box| %>
11
+ <% box.t title: '.profile.header', description: '.profile.description' %>
12
+ <% box.body.render "account/users/form", user: @user %>
16
13
  <% end %>
17
14
 
18
15
  <% if two_factor_authentication_enabled? %>
@@ -25,9 +22,9 @@
25
22
  <div class="xl:col-span-1 space-y-8">
26
23
  <%= render 'account/users/oauth' %>
27
24
 
28
- <%= render 'account/shared/box', divider: true do |p| %>
29
- <% p.content_for :title, t('.password.header') %>
30
- <% p.content_for :body do %>
25
+ <%= render 'account/shared/box', divider: true do |box| %>
26
+ <% box.title t('.password.header') %>
27
+ <% box.body do %>
31
28
  <% within_fields_namespace(:update_self) do %>
32
29
  <%= form_for [:account, @user], html: {id: dom_id(@user, :password), class: 'form'} do |form| %>
33
30
  <% with_field_settings form: form do %>
@@ -1,7 +1,7 @@
1
1
  <% @title = t('devise.headers.change_password') %>
2
- <%= render 'account/shared/workflow/box' do |p| %>
3
- <% p.content_for :title, @title %>
4
- <% p.content_for :body do %>
2
+ <%= render 'account/shared/workflow/box' do |box| %>
3
+ <% box.title @title %>
4
+ <% box.body do %>
5
5
  <% within_fields_namespace(:update_self) do %>
6
6
  <%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { class: 'form', method: :put }) do |f| %>
7
7
  <%= f.hidden_field :reset_password_token %>
@@ -1,6 +1,6 @@
1
- <%= render 'account/shared/workflow/box' do |p| %>
2
- <% p.content_for :title, t('devise.titles.reset_password') %>
3
- <% p.content_for :body do %>
1
+ <%= render 'account/shared/workflow/box' do |box| %>
2
+ <% box.title t('devise.titles.reset_password') %>
3
+ <% box.body do %>
4
4
  <% within_fields_namespace(:sign_up) do %>
5
5
  <%= form_for resource, as: resource_name, url: password_path(resource_name), html: {method: :post, class: 'form'} do |f| %>
6
6
  <%= render 'account/shared/forms/errors', form: f %>
@@ -1,10 +1,9 @@
1
- <%= render 'account/shared/box', divider: @backup_codes do |p| %>
2
- <% p.content_for :title, t("users.edit.two_factor.header") %>
3
- <% p.content_for :description, t("users.edit.two_factor.description_#{@user.otp_required_for_login? ? 'enabled' : 'disabled'}") %>
1
+ <%= render 'account/shared/box', divider: @backup_codes do |box| %>
2
+ <% box.title t("users.edit.two_factor.header") %>
3
+ <% box.description t("users.edit.two_factor.description_#{@user.otp_required_for_login? ? 'enabled' : 'disabled'}") %>
4
4
  <% if current_user.otp_secret %>
5
5
  <% if @backup_codes %>
6
- <% p.content_for :body do %>
7
-
6
+ <% box.body do %>
8
7
  <%= render 'account/shared/alert' do %>
9
8
  <%= t('users.edit.two_factor.warning').html_safe %>
10
9
  <% end %>
@@ -38,7 +37,7 @@
38
37
  <% end %>
39
38
  <% end %>
40
39
  <% end %>
41
- <% p.content_for :actions do %>
40
+ <% box.actions do %>
42
41
  <div class="<%= 'hidden' if @backup_codes %> space-y">
43
42
  <% if local_assigns.has_key? :verified %>
44
43
  <% if verified %>
@@ -1,6 +1,6 @@
1
- <%= render 'account/shared/workflow/box' do |p| %>
2
- <% p.content_for :title, t('devise.headers.create_account') %>
3
- <% p.content_for :body do %>
1
+ <%= render 'account/shared/workflow/box' do |box| %>
2
+ <% box.title t('devise.headers.create_account') %>
3
+ <% box.body do %>
4
4
  <% within_fields_namespace(:sign_up) do %>
5
5
  <%= form_for resource, as: resource_name, url: registration_path(resource_name), html: {class: 'form'} do |f| %>
6
6
  <%= render 'account/shared/notices' %>
@@ -1,6 +1,6 @@
1
- <%= render 'account/shared/workflow/box' do |p| %>
2
- <% p.content_for :title, t('devise.headers.sign_in') %>
3
- <% p.content_for :body do %>
1
+ <%= render 'account/shared/workflow/box' do |box| %>
2
+ <% box.title t('devise.headers.sign_in') %>
3
+ <% box.body do %>
4
4
  <% within_fields_namespace(:self) do %>
5
5
  <%# TODO: Turbo is set to `false` for now, but we may want to only bypass Turbo for JavaScript-based requests in the future. %>
6
6
  <%= form_for resource, as: resource_name, url: two_factor_authentication_enabled? ? users_pre_otp_path : session_path(resource_name), remote: two_factor_authentication_enabled?, html: {class: 'form'}, authenticity_token: true, data: {turbo: false} do |form| %>
@@ -32,7 +32,7 @@
32
32
  <meta property="og:url" content="<%= request.base_url + request.path %>" />
33
33
  <meta property="og:description" content="<%= description.truncate(200) %>" />
34
34
  </head>
35
- <body class="bg-light-gradient text-slate-700 text-sm font-normal dark:bg-800-gradient dark:text-slate-300">
35
+ <body class="<%= BulletTrain::Themes::Light.background || "bg-gradient-to-br from-secondary-200 to-primary-400 dark:from-primary-900 dark:to-primary-600" %> text-slate-700 text-sm font-normal dark:text-slate-300">
36
36
  <div class="md:p-5">
37
37
  <div class="min-h-screen md:h-auto overflow-hidden md:rounded-lg flex shadow"
38
38
  data-controller="mobile-menu"
@@ -60,19 +60,19 @@
60
60
 
61
61
  <%= render 'account/shared/menu/section', title: 'Introduction' do %>
62
62
  <%= render 'account/shared/menu/item', url: '/docs', label: 'Table of Contents' do |p| %>
63
- <% p.content_for :icon do %>
63
+ <% p.icon do %>
64
64
  <i class="fal fa-home-lg-alt ti ti-list"></i>
65
65
  <% end %>
66
66
  <% end %>
67
67
 
68
68
  <%= render 'account/shared/menu/item', url: '/docs/getting-started', label: 'Getting Started' do |p| %>
69
- <% p.content_for :icon do %>
69
+ <% p.icon do %>
70
70
  <i class="fal fa-terminal ti ti-flag"></i>
71
71
  <% end %>
72
72
  <% end %>
73
73
 
74
74
  <%= render 'account/shared/menu/item', url: '/docs/upgrades', label: 'Upgrades' do |p| %>
75
- <% p.content_for :icon do %>
75
+ <% p.icon do %>
76
76
  <i class="fal fa-sparkles ti ti-arrow-up"></i>
77
77
  <% end %>
78
78
  <% end %>
@@ -80,37 +80,37 @@
80
80
 
81
81
  <%= render 'account/shared/menu/section', title: 'General Topics' do %>
82
82
  <%= render 'account/shared/menu/item', url: '/docs/modeling', label: 'Domain Modeling' do |p| %>
83
- <% p.content_for :icon do %>
83
+ <% p.icon do %>
84
84
  <i class="fal fa-bolt ti ti-ruler-pencil"></i>
85
85
  <% end %>
86
86
  <% end %>
87
87
 
88
88
  <%= render 'account/shared/menu/item', url: '/docs/indirection', label: 'Indirection' do |p| %>
89
- <% p.content_for :icon do %>
89
+ <% p.icon do %>
90
90
  <i class="fal fa-bolt ti ti-direction"></i>
91
91
  <% end %>
92
92
  <% end %>
93
93
 
94
94
  <%= render 'account/shared/menu/item', url: '/docs/overriding', label: 'Overriding' do |p| %>
95
- <% p.content_for :icon do %>
95
+ <% p.icon do %>
96
96
  <i class="fal fa-bolt ti ti-spray"></i>
97
97
  <% end %>
98
98
  <% end %>
99
99
 
100
100
  <%= render 'account/shared/menu/item', url: '/docs/tunneling', label: 'Tunneling' do |p| %>
101
- <% p.content_for :icon do %>
101
+ <% p.icon do %>
102
102
  <i class="fal fa-bolt ti ti-bolt"></i>
103
103
  <% end %>
104
104
  <% end %>
105
105
 
106
106
  <%= render 'account/shared/menu/item', url: '/docs/javascript', label: 'JavaScript' do |p| %>
107
- <% p.content_for :icon do %>
107
+ <% p.icon do %>
108
108
  <i class="fa-brands fa-js ti ti-pulse"></i>
109
109
  <% end %>
110
110
  <% end %>
111
111
 
112
112
  <%= render 'account/shared/menu/item', url: '/docs/i18n', label: 'Internationalzation' do |p| %>
113
- <% p.content_for :icon do %>
113
+ <% p.icon do %>
114
114
  <i class="fa-brands fa-js ti ti-world"></i>
115
115
  <% end %>
116
116
  <% end %>
@@ -118,37 +118,37 @@
118
118
 
119
119
  <%= render 'account/shared/menu/section', title: 'Developer Tools' do %>
120
120
  <%= render 'account/shared/menu/item', url: '/docs/super-scaffolding', label: 'Super Scaffolding' do |p| %>
121
- <% p.content_for :icon do %>
121
+ <% p.icon do %>
122
122
  <i class="fal fa-magic ti ti-wand"></i>
123
123
  <% end %>
124
124
  <% end %>
125
125
 
126
126
  <%= render 'account/shared/menu/item', url: '/docs/action-models', label: 'Action Models' do |p| %>
127
- <% p.content_for :icon do %>
127
+ <% p.icon do %>
128
128
  <i class="fal fa-bars-progress ti ti-target"></i>
129
129
  <% end %>
130
130
  <% end %>
131
131
 
132
132
  <%= render 'account/shared/menu/item', url: '/docs/seeds', label: 'Database Seeds' do |p| %>
133
- <% p.content_for :icon do %>
133
+ <% p.icon do %>
134
134
  <i class="fal fa-seedling ti ti-server"></i>
135
135
  <% end %>
136
136
  <% end %>
137
137
 
138
138
  <%= render 'account/shared/menu/item', url: '/docs/testing', label: 'Test Suite' do |p| %>
139
- <% p.content_for :icon do %>
139
+ <% p.icon do %>
140
140
  <i class="fal fa-check ti ti-check"></i>
141
141
  <% end %>
142
142
  <% end %>
143
143
 
144
144
  <%= render 'account/shared/menu/item', url: 'https://github.com/bullet-train-co/magic_test', label: 'Magic Test' do |p| %>
145
- <% p.content_for :icon do %>
145
+ <% p.icon do %>
146
146
  <i class="fal fa-check ti ti-video-camera"></i>
147
147
  <% end %>
148
148
  <% end %>
149
149
 
150
150
  <%= render 'account/shared/menu/item', url: '/docs/application-options', label: 'Application Options' do |p| %>
151
- <% p.content_for :icon do %>
151
+ <% p.icon do %>
152
152
  <i class="fal fa-gear ti ti-settings"></i>
153
153
  <% end %>
154
154
  <% end %>
@@ -156,31 +156,31 @@
156
156
 
157
157
  <%= render 'account/shared/menu/section', title: 'Accounts & Teams' do %>
158
158
  <%= render 'account/shared/menu/item', url: '/docs/authentication', label: 'Authentication' do |p| %>
159
- <% p.content_for :icon do %>
159
+ <% p.icon do %>
160
160
  <i class="fal fa-fingerprint ti ti-id-badge"></i>
161
161
  <% end %>
162
162
  <% end %>
163
163
 
164
164
  <%= render 'account/shared/menu/item', url: '/docs/teams', label: 'Teams' do |p| %>
165
- <% p.content_for :icon do %>
165
+ <% p.icon do %>
166
166
  <i class="fal fa-users ti ti-user"></i>
167
167
  <% end %>
168
168
  <% end %>
169
169
 
170
170
  <%= render 'account/shared/menu/item', url: '/docs/permissions', label: 'Roles & Permissions' do |p| %>
171
- <% p.content_for :icon do %>
171
+ <% p.icon do %>
172
172
  <i class="fal fa-lock-alt ti ti-lock"></i>
173
173
  <% end %>
174
174
  <% end %>
175
175
 
176
176
  <%= render 'account/shared/menu/item', url: '/docs/onboarding', label: 'Onboarding' do |p| %>
177
- <% p.content_for :icon do %>
177
+ <% p.icon do %>
178
178
  <i class="fal fa-snowboarding ti ti-direction"></i>
179
179
  <% end %>
180
180
  <% end %>
181
181
 
182
182
  <%= render 'account/shared/menu/item', url: '/docs/namespacing', label: 'Namespacing' do |p| %>
183
- <% p.content_for :icon do %>
183
+ <% p.icon do %>
184
184
  <i class="fal fa-object-group ti ti-widgetized"></i>
185
185
  <% end %>
186
186
  <% end %>
@@ -188,19 +188,19 @@
188
188
 
189
189
  <%= render 'account/shared/menu/section', title: 'User Interface' do %>
190
190
  <%= render 'account/shared/menu/item', url: '/docs/field-partials', label: 'Field Partials' do |p| %>
191
- <% p.content_for :icon do %>
191
+ <% p.icon do %>
192
192
  <i class="fal fa-i-cursor ti ti-text"></i>
193
193
  <% end %>
194
194
  <% end %>
195
195
 
196
196
  <%= render 'account/shared/menu/item', url: '/docs/themes', label: 'Themes' do |p| %>
197
- <% p.content_for :icon do %>
197
+ <% p.icon do %>
198
198
  <i class="fal fa-swatchbook ti ti-palette"></i>
199
199
  <% end %>
200
200
  <% end %>
201
201
 
202
202
  <%= render 'account/shared/menu/item', url: 'https://github.com/bullet-train-co/nice_partials', label: 'Nice Partials' do |p| %>
203
- <% p.content_for :icon do %>
203
+ <% p.icon do %>
204
204
  <i class="fal fa-swatchbook ti ti-widget"></i>
205
205
  <% end %>
206
206
  <% end %>
@@ -208,7 +208,7 @@
208
208
 
209
209
  <%= render 'account/shared/menu/section', title: 'Billing' do %>
210
210
  <%= render 'account/shared/menu/item', url: '/docs/billing/stripe', label: 'Stripe' do |p| %>
211
- <% p.content_for :icon do %>
211
+ <% p.icon do %>
212
212
  <i class="fab fa-stripe-s ti ti-money"></i>
213
213
  <% end %>
214
214
  <% end %>
@@ -216,31 +216,31 @@
216
216
 
217
217
  <%= render 'account/shared/menu/section', title: 'Integration' do %>
218
218
  <%= render 'account/shared/menu/item', url: '/docs/api', label: 'REST API' do |p| %>
219
- <% p.content_for :icon do %>
219
+ <% p.icon do %>
220
220
  <i class="fal fa-brackets-curly ti ti-settings"></i>
221
221
  <% end %>
222
222
  <% end %>
223
223
 
224
224
  <%= render 'account/shared/menu/item', url: '/docs/zapier', label: 'Zapier' do |p| %>
225
- <% p.content_for :icon do %>
225
+ <% p.icon do %>
226
226
  <i class="fal fa-bolt ti ti-bolt"></i>
227
227
  <% end %>
228
228
  <% end %>
229
229
 
230
230
  <%= render 'account/shared/menu/item', url: '/docs/oauth', label: 'OAuth Providers' do |p| %>
231
- <% p.content_for :icon do %>
231
+ <% p.icon do %>
232
232
  <i class="fal fa-at ti ti-reload"></i>
233
233
  <% end %>
234
234
  <% end %>
235
235
 
236
236
  <%= render 'account/shared/menu/item', url: '/docs/webhooks/outgoing', label: 'Outgoing Webhooks' do |p| %>
237
- <% p.content_for :icon do %>
237
+ <% p.icon do %>
238
238
  <i class="fal fa-outlet ti ti-pulse"></i>
239
239
  <% end %>
240
240
  <% end %>
241
241
 
242
242
  <%= render 'account/shared/menu/item', url: '/docs/webhooks/incoming', label: 'Incoming Webhooks' do |p| %>
243
- <% p.content_for :icon do %>
243
+ <% p.icon do %>
244
244
  <i class="fal fa-plug ti ti-plug"></i>
245
245
  <% end %>
246
246
  <% end %>
@@ -248,7 +248,7 @@
248
248
 
249
249
  <%= render 'account/shared/menu/section', title: 'Internationalization' do %>
250
250
  <%= render 'account/shared/menu/item', url: '/docs/i18n', label: 'Translations' do |p| %>
251
- <% p.content_for :icon do %>
251
+ <% p.icon do %>
252
252
  <i class="fal fa-language ti ti-world"></i>
253
253
  <% end %>
254
254
  <% end %>
@@ -256,7 +256,7 @@
256
256
 
257
257
  <%= render 'account/shared/menu/section', title: 'Add-Ons' do %>
258
258
  <%= render 'account/shared/menu/item', url: '/docs/font-awesome-pro', label: 'Font Awesome Pro' do |p| %>
259
- <% p.content_for :icon do %>
259
+ <% p.icon do %>
260
260
  <i class="fal fa-flag ti ti-flag"></i>
261
261
  <% end %>
262
262
  <% end %>
@@ -264,13 +264,13 @@
264
264
 
265
265
  <%= render 'account/shared/menu/section', title: 'Deployment' do %>
266
266
  <%= render 'account/shared/menu/item', url: '/docs/heroku', label: 'Heroku' do |p| %>
267
- <% p.content_for :icon do %>
267
+ <% p.icon do %>
268
268
  <i class="fal fa-cloud ti ti-cloud-up"></i>
269
269
  <% end %>
270
270
  <% end %>
271
271
 
272
272
  <%= render 'account/shared/menu/item', url: '/docs/desktop', label: 'Desktop Applications' do |p| %>
273
- <% p.content_for :icon do %>
273
+ <% p.icon do %>
274
274
  <i class="fal fa-window-restore ti ti-desktop"></i>
275
275
  <% end %>
276
276
  <% end %>
@@ -296,7 +296,7 @@
296
296
 
297
297
  class="fixed inset-0" aria-hidden="true"
298
298
  >
299
- <div class="absolute inset-0 bg-light-gradient opacity-75"></div>
299
+ <div class="absolute inset-0 bg-gradient-to-br from-secondary-200 to-primary-400 opacity-75"></div>
300
300
  </button>
301
301
  <div
302
302
  data-mobile-menu-target="revealable"
@@ -308,7 +308,7 @@
308
308
  data-transition-leave-start="translate-x-0"
309
309
  data-transition-leave-end="-translate-x-full"
310
310
 
311
- class="relative flex-1 flex flex-col max-w-xs w-full pb-4 bg-800-gradient shadow-xl"
311
+ class="relative flex-1 flex flex-col max-w-xs w-full pb-4 bg-gradient-to-br from-primary-900 to-primary-600 shadow-xl"
312
312
  >
313
313
  <%= menu %>
314
314
  </div>
@@ -1,3 +1,3 @@
1
1
  module BulletTrain
2
- VERSION = "1.2.19"
2
+ VERSION = "1.2.21"
3
3
  end
@@ -109,14 +109,17 @@ namespace :bullet_train do
109
109
  flags_with_values.each do |process|
110
110
  case process[:flag]
111
111
  when "--help"
112
- puts "bin/hack: Clone bullet_train-core and link up gems (will only link up gems if already cloned).".blue
113
- puts "bin/hack --link: Link all of your Bullet Train gems to `local/bullet_train-core`".blue
114
- puts "bin/hack --reset: Resets all of your gems to their original definition.".blue
115
- puts "bin/hack --watch-js: Watches for any changes in JavaScript files gems that have an npm package.".blue
116
- puts "bin/hack --clean-js: Resets all of your npm packages from `local/bullet_train-core` to their original definition".blue
112
+ puts ""
113
+ puts "bin/hack: " + "Clone bullet_train-core and link up gems (will only link up gems if already cloned).".blue
114
+ puts "bin/hack --link: " + "Link all of your Bullet Train gems to `local/bullet_train-core`.".blue
115
+ puts "bin/hack --link (version-number): " + "Link all of your Bullet Train gems to the version number passed.".blue
116
+ puts "bin/hack --reset: " + "Resets all of your gems to their original definition.".blue
117
+ puts "bin/hack --watch-js: " + "Watches for any changes in JavaScript files gems that have an npm package.".blue
118
+ puts "bin/hack --clean-js: " + "Resets all of your npm packages from `local/bullet_train-core` to their original definition.".blue
117
119
  exit
118
120
  when "--link", "--reset"
119
- set_core_gems(process[:flag], framework_packages)
121
+ version = process[:values].pop
122
+ set_core_gems(process[:flag], version, framework_packages)
120
123
  stream "bundle install"
121
124
  when "--watch-js", "--clean-js"
122
125
  package_name = process[:values].pop
@@ -185,7 +188,7 @@ namespace :bullet_train do
185
188
 
186
189
  # Link all of the local gems to the current Gemfile.
187
190
  puts "Now we'll try to link up the Bullet Train core repositories in the `Gemfile`.".blue
188
- set_core_gems("--link", framework_packages)
191
+ set_core_gems("--link", nil, framework_packages)
189
192
 
190
193
  puts ""
191
194
  puts "Now we'll run `bundle install`.".blue
@@ -215,7 +218,7 @@ namespace :bullet_train do
215
218
  end
216
219
 
217
220
  # Pass "--link" or "--reset" as a flag to set the gems.
218
- def set_core_gems(flag, framework_packages)
221
+ def set_core_gems(flag, version, framework_packages)
219
222
  packages = framework_packages.keys
220
223
  gemfile_lines = File.readlines("./Gemfile")
221
224
 
@@ -231,15 +234,20 @@ namespace :bullet_train do
231
234
  if flag == "--link"
232
235
  if `cat Gemfile | grep "gem \\\"#{package}\\\", path: \\\"local/bullet_train-core/#{package}\\\""`.chomp.present?
233
236
  puts "#{package} is already linked to a checked out copy in `local` in the `Gemfile`.".green
234
- elsif `cat Gemfile | grep "gem \\\"#{package}\\\","`.chomp.present?
237
+ # We can update this later to match a regular expression at the end
238
+ # (git: "...", require: "...", etc.), but this will do for now.
239
+ elsif `cat Gemfile | grep "gem \\\"#{package}\\\", path:"`.chomp.present?
235
240
  puts "#{package} already has some sort of alternative source configured in the `Gemfile`.".yellow
236
241
  puts "We can't do anything with this. Sorry! We'll proceed, but you have to link this package yourself.".red
237
242
  elsif `cat Gemfile | grep "gem \\\"#{package}\\\""`.chomp.present?
238
243
  puts "#{package} is directly present in the `Gemfile`, so we'll update that line.".green
239
- line.gsub!(original_path, local_path)
244
+ line = version.present? ? "#{line.chomp}, \"#{version}\"\n" : line.gsub(original_path, local_path)
240
245
  end
241
246
  elsif flag == "--reset"
242
- line.gsub!(local_path, original_path)
247
+ if line.match?(/bullet_train/)
248
+ line.gsub!(local_path, original_path) # Reset local path
249
+ line.gsub!(/, "[0-9|.]*"$/, "") # Reset specific version
250
+ end
243
251
  puts "Resetting '#{package}' package in the Gemfile...".blue
244
252
  end
245
253
  end
@@ -250,7 +258,11 @@ namespace :bullet_train do
250
258
  if flag == "--link"
251
259
  unless match_found
252
260
  puts "Could not find #{package}. Adding to the end of the Gemfile.".blue
253
- new_lines << "#{local_path}\n"
261
+ new_lines << if version
262
+ "#{original_path.chomp}, \"#{version}\"\n"
263
+ else
264
+ "#{local_path}\n"
265
+ end
254
266
  end
255
267
  elsif flag == "--reset"
256
268
  gem_regexp = /bullet_train-[a-z|A-Z_-]+/
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bullet_train
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.19
4
+ version: 1.2.21
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Culver
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-09 00:00:00.000000000 Z
11
+ date: 2023-03-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: standard
@@ -296,14 +296,14 @@ dependencies:
296
296
  requirements:
297
297
  - - "~>"
298
298
  - !ruby/object:Gem::Version
299
- version: '0.1'
299
+ version: '0.9'
300
300
  type: :runtime
301
301
  prerelease: false
302
302
  version_requirements: !ruby/object:Gem::Requirement
303
303
  requirements:
304
304
  - - "~>"
305
305
  - !ruby/object:Gem::Version
306
- version: '0.1'
306
+ version: '0.9'
307
307
  - !ruby/object:Gem::Dependency
308
308
  name: showcase-rails
309
309
  requirement: !ruby/object:Gem::Requirement