rateaux 2.0.0 → 2.2.0
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 +4 -4
- data/README.md +53 -9
- data/Rakefile +14 -4
- data/lib/rateaux/file_task.rb +2 -2
- data/lib/rateaux/namespaced.rb +3 -3
- data/lib/rateaux/version.rb +1 -1
- data/lib/tasks/rateaux_add_frozen_string_literal_headers.rake +3 -3
- data/lib/tasks/rateaux_db_migrate.rake +24 -0
- data/lib/tasks/rateaux_db_schema_print_dump.rake +13 -0
- data/lib/tasks/rateaux_db_schema_view.rake +11 -11
- data/lib/tasks/rateaux_i18n_word_count.rake +48 -0
- metadata +10 -77
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e346b9a084dd267e02240cee8f40e665d8ac61eb56a1203e5abe45601862276b
|
|
4
|
+
data.tar.gz: 86450dae663250be671655bb286b507a2c79c3eb44529cf4639f239a2417e8fd
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f88fc1aada08f4a57170b1b5c818c01183a38d89b33473e3878c345a24c2e91ce1b54c7e43f1620f34864ff652472d914f3cd4150c6b5fd0f255e83c8df33f71
|
|
7
|
+
data.tar.gz: dc75de811d58084701898d3921f5e626dc4df3e84f1fbf39cff4afe07befc7d5d570abad1520566fe28b7b55a0afd0be59c186d0f2a903634856199e309d9fd8
|
data/README.md
CHANGED
|
@@ -17,7 +17,6 @@ gem "rateaux"
|
|
|
17
17
|
|
|
18
18
|
Then call `bundle install`.
|
|
19
19
|
|
|
20
|
-
|
|
21
20
|
## Tasks
|
|
22
21
|
|
|
23
22
|
### DB Truncate
|
|
@@ -37,9 +36,43 @@ Delete all data and tables from the current database. This is similar to
|
|
|
37
36
|
$ rake db:drop_tables
|
|
38
37
|
```
|
|
39
38
|
|
|
39
|
+
### DB Migrate Delete Orphaned
|
|
40
|
+
|
|
41
|
+
When your migration errors with "No migration with version number" you can call
|
|
42
|
+
this to delete all migrations that don’t have associated files anymore.
|
|
43
|
+
|
|
44
|
+
```sh
|
|
45
|
+
$ rake db:migrate:delete_orphaned
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### DB schema view
|
|
49
|
+
|
|
50
|
+
View the database structure as an ascii table.
|
|
51
|
+
|
|
52
|
+
```sh
|
|
53
|
+
$ rake db:schema:view
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### DB schema print dump
|
|
57
|
+
|
|
58
|
+
Print the database structure as a Ruby file. Like `db:schema:dump` but printed
|
|
59
|
+
out instead of written to `db/schema.rb`.
|
|
60
|
+
|
|
61
|
+
```sh
|
|
62
|
+
$ rake db:schema:print_dump
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### I18n word count
|
|
66
|
+
|
|
67
|
+
Show the number of translated words in every available locale.
|
|
68
|
+
|
|
69
|
+
```sh
|
|
70
|
+
$ rake i18n:word_count
|
|
71
|
+
```
|
|
72
|
+
|
|
40
73
|
### Checkout
|
|
41
74
|
|
|
42
|
-
Remove migrations then checkout a git branch.
|
|
75
|
+
Remove Rails migrations then checkout a git branch.
|
|
43
76
|
|
|
44
77
|
```sh
|
|
45
78
|
$ rake checkout new_branch_name
|
|
@@ -79,22 +112,33 @@ to their non-digested form (for example `application.css`).
|
|
|
79
112
|
$ rake assets:copy_non_digested
|
|
80
113
|
```
|
|
81
114
|
|
|
82
|
-
###
|
|
115
|
+
### Frozen string literal
|
|
83
116
|
|
|
84
|
-
|
|
117
|
+
Add the `# frozen_string_literal: true` header to all Ruby files in the project.
|
|
85
118
|
|
|
86
119
|
```sh
|
|
87
|
-
$ rake
|
|
120
|
+
$ rake add_frozen_string_literal_headers
|
|
88
121
|
```
|
|
89
122
|
|
|
90
|
-
### Frozen string literal
|
|
91
123
|
|
|
92
|
-
|
|
124
|
+
## Release
|
|
125
|
+
|
|
126
|
+
To release a new version, update `CHANGELOG.md`, update the version in
|
|
127
|
+
`lib/rateaux/version.rb`.
|
|
128
|
+
|
|
129
|
+
Then:
|
|
93
130
|
|
|
94
131
|
```sh
|
|
95
|
-
|
|
132
|
+
git add CHANGELOG.md lib/rateaux/version.rb
|
|
133
|
+
git commit -m v`ruby -r./lib/rateaux/version <<< 'puts Rateaux::VERSION'`
|
|
134
|
+
bin/rake release
|
|
96
135
|
```
|
|
97
136
|
|
|
137
|
+
## License
|
|
138
|
+
|
|
139
|
+
The gem is available as open source under the terms of the
|
|
140
|
+
[MIT License](http://opensource.org/licenses/MIT).
|
|
141
|
+
|
|
98
142
|
## The name
|
|
99
143
|
|
|
100
|
-
In French _rateaux_ means _rakes_.
|
|
144
|
+
In French _rateaux_ means _rakes_. 🌾
|
data/Rakefile
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env rake
|
|
2
2
|
# frozen_string_literal: true
|
|
3
3
|
|
|
4
|
-
#
|
|
4
|
+
# Bundler
|
|
5
|
+
|
|
5
6
|
begin
|
|
6
7
|
require "bundler/setup"
|
|
7
8
|
rescue LoadError
|
|
@@ -10,7 +11,8 @@ end
|
|
|
10
11
|
|
|
11
12
|
Bundler::GemHelper.install_tasks
|
|
12
13
|
|
|
13
|
-
#
|
|
14
|
+
# RDoc
|
|
15
|
+
|
|
14
16
|
begin
|
|
15
17
|
require "rdoc/task"
|
|
16
18
|
rescue LoadError
|
|
@@ -27,7 +29,15 @@ RDoc::Task.new(:rdoc) do |rdoc|
|
|
|
27
29
|
rdoc.rdoc_files.include("lib/**/*.rb")
|
|
28
30
|
end
|
|
29
31
|
|
|
30
|
-
#
|
|
32
|
+
# RSpec
|
|
33
|
+
|
|
31
34
|
require "rspec/core/rake_task"
|
|
32
35
|
RSpec::Core::RakeTask.new(:spec)
|
|
33
|
-
|
|
36
|
+
|
|
37
|
+
# RuboCop
|
|
38
|
+
|
|
39
|
+
require "rubocop/rake_task"
|
|
40
|
+
|
|
41
|
+
RuboCop::RakeTask.new
|
|
42
|
+
|
|
43
|
+
task default: %i[spec rubocop]
|
data/lib/rateaux/file_task.rb
CHANGED
data/lib/rateaux/namespaced.rb
CHANGED
|
@@ -13,7 +13,7 @@ module Rateaux
|
|
|
13
13
|
#
|
|
14
14
|
# desc "Export everything"
|
|
15
15
|
# namespaced :export do
|
|
16
|
-
# default: [:a, :b]
|
|
16
|
+
# task default: [:a, :b]
|
|
17
17
|
#
|
|
18
18
|
# ...
|
|
19
19
|
# end
|
|
@@ -34,7 +34,7 @@ module Rateaux
|
|
|
34
34
|
# task export: ["export:a", "export:b"]
|
|
35
35
|
#
|
|
36
36
|
module Namespaced
|
|
37
|
-
def namespaced(name, defaults = :default, &
|
|
37
|
+
def namespaced(name, defaults = :default, &)
|
|
38
38
|
case defaults
|
|
39
39
|
when Symbol, String
|
|
40
40
|
task name => "#{name}:#{defaults}"
|
|
@@ -44,7 +44,7 @@ module Rateaux
|
|
|
44
44
|
task name => defaults.to_a.map { |t| "#{name}:#{t}" }
|
|
45
45
|
end
|
|
46
46
|
|
|
47
|
-
namespace
|
|
47
|
+
namespace(name, &)
|
|
48
48
|
end
|
|
49
49
|
end
|
|
50
50
|
end
|
data/lib/rateaux/version.rb
CHANGED
|
@@ -14,14 +14,14 @@ task add_frozen_string_literal_headers: :environment do
|
|
|
14
14
|
header = "# frozen_string_literal: true\n"
|
|
15
15
|
|
|
16
16
|
files.each do |file|
|
|
17
|
+
next if file.end_with?("db/schema.rb")
|
|
18
|
+
|
|
17
19
|
content = File.read(file)
|
|
18
20
|
next if content[0..header.length] == header
|
|
19
21
|
|
|
20
22
|
content = content.gsub(/^# (frozen_string_literal: true)\n/i, "")
|
|
21
23
|
content = "#{header}#{content}"
|
|
22
24
|
|
|
23
|
-
|
|
24
|
-
new_file.write(content)
|
|
25
|
-
new_file.close
|
|
25
|
+
File.write(file, content)
|
|
26
26
|
end
|
|
27
27
|
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Delete orhphaned migrations.
|
|
4
|
+
#
|
|
5
|
+
# $ rake db:migrate:delete_orphaned
|
|
6
|
+
namespace :db do
|
|
7
|
+
namespace :migrate do
|
|
8
|
+
desc "Delete migrations that don’t have associated files anymore"
|
|
9
|
+
task delete_orphaned: :environment do
|
|
10
|
+
removed_file_versions =
|
|
11
|
+
ActiveRecord::Base
|
|
12
|
+
.connection_pool
|
|
13
|
+
.migration_context
|
|
14
|
+
.migrations_status
|
|
15
|
+
.filter_map { |_, version, name| version if name.include?("NO FILE") }
|
|
16
|
+
|
|
17
|
+
removed_file_versions.each do |version|
|
|
18
|
+
puts "Deleting orphaned version #{version}"
|
|
19
|
+
sql = "DELETE FROM schema_migrations WHERE version = '#{version}'"
|
|
20
|
+
ActiveRecord::Base.connection.execute(sql)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Print database schema.
|
|
4
|
+
#
|
|
5
|
+
# $ rake db:schema:print_dump
|
|
6
|
+
namespace :db do
|
|
7
|
+
namespace :schema do
|
|
8
|
+
desc "Print database dump"
|
|
9
|
+
task print_dump: :environment do
|
|
10
|
+
ActiveRecord::SchemaDumper.dump
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require "terminal-table"
|
|
4
|
+
|
|
3
5
|
# View database schema.
|
|
4
6
|
#
|
|
5
7
|
# $ rake db:schema:view
|
|
6
|
-
require "terminal-table"
|
|
7
8
|
namespace :db do
|
|
8
9
|
namespace :schema do
|
|
9
10
|
desc "View database schema"
|
|
10
|
-
task :
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
tables = ActiveRecord::Base.connection.tables.reject do |t|
|
|
15
|
-
t == "schema_migrations"
|
|
16
|
-
end
|
|
17
|
-
tables.each do |table|
|
|
11
|
+
task view: :environment do
|
|
12
|
+
ActiveRecord::Base.connection.tables.each do |table|
|
|
13
|
+
next if table == "schema_migrations"
|
|
14
|
+
|
|
18
15
|
rows = ActiveRecord::Base.connection.columns(table).map do |column|
|
|
19
16
|
[column.name, column.type]
|
|
20
17
|
end
|
|
21
|
-
table = Terminal::Table.new
|
|
22
|
-
|
|
18
|
+
table = Terminal::Table.new(
|
|
19
|
+
title: table,
|
|
20
|
+
headings: %w[Name Type],
|
|
21
|
+
rows: rows
|
|
22
|
+
)
|
|
23
23
|
puts table
|
|
24
24
|
end
|
|
25
25
|
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Show the number of translated words in every available locale.
|
|
4
|
+
#
|
|
5
|
+
# $ rake i18n:word_count
|
|
6
|
+
|
|
7
|
+
require "unicode/emoji"
|
|
8
|
+
|
|
9
|
+
class RateauxI18nWordCount
|
|
10
|
+
include ActionView::Helpers::SanitizeHelper
|
|
11
|
+
|
|
12
|
+
def words_for_locale(locale)
|
|
13
|
+
translations = I18n.t(".", locale: locale)
|
|
14
|
+
words = hash_string_values(translations).flat_map do |translation|
|
|
15
|
+
strip_tags(translation).split(/\s+/)
|
|
16
|
+
end
|
|
17
|
+
words.reject do |word|
|
|
18
|
+
word.blank? ||
|
|
19
|
+
word.size == 1 ||
|
|
20
|
+
word.start_with?("%") ||
|
|
21
|
+
word.match?(Unicode::Emoji::REGEX_VALID_INCLUDE_TEXT)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
private
|
|
26
|
+
|
|
27
|
+
def hash_string_values(hash)
|
|
28
|
+
hash.inject([]) do |array, (_key, value)|
|
|
29
|
+
case value
|
|
30
|
+
when Hash then array + hash_string_values(value)
|
|
31
|
+
when String then array + [value]
|
|
32
|
+
else array
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
namespace :i18n do
|
|
39
|
+
desc "Show the number of translated words in every available locale"
|
|
40
|
+
task word_count: :environment do
|
|
41
|
+
counter = RateauxI18nWordCount.new
|
|
42
|
+
|
|
43
|
+
I18n.available_locales.each do |locale|
|
|
44
|
+
words = counter.words_for_locale(locale)
|
|
45
|
+
puts "#{locale}: #{words.count} (#{words.uniq.count} unique)"
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rateaux
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Sunny Ripert
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date:
|
|
10
|
+
date: 2026-07-22 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: database_cleaner
|
|
@@ -52,90 +52,20 @@ dependencies:
|
|
|
52
52
|
- !ruby/object:Gem::Version
|
|
53
53
|
version: '0'
|
|
54
54
|
- !ruby/object:Gem::Dependency
|
|
55
|
-
name:
|
|
55
|
+
name: unicode-emoji
|
|
56
56
|
requirement: !ruby/object:Gem::Requirement
|
|
57
57
|
requirements:
|
|
58
58
|
- - ">="
|
|
59
59
|
- !ruby/object:Gem::Version
|
|
60
60
|
version: '0'
|
|
61
|
-
type: :
|
|
62
|
-
prerelease: false
|
|
63
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
64
|
-
requirements:
|
|
65
|
-
- - ">="
|
|
66
|
-
- !ruby/object:Gem::Version
|
|
67
|
-
version: '0'
|
|
68
|
-
- !ruby/object:Gem::Dependency
|
|
69
|
-
name: rspec-rails
|
|
70
|
-
requirement: !ruby/object:Gem::Requirement
|
|
71
|
-
requirements:
|
|
72
|
-
- - ">="
|
|
73
|
-
- !ruby/object:Gem::Version
|
|
74
|
-
version: '0'
|
|
75
|
-
type: :development
|
|
76
|
-
prerelease: false
|
|
77
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
78
|
-
requirements:
|
|
79
|
-
- - ">="
|
|
80
|
-
- !ruby/object:Gem::Version
|
|
81
|
-
version: '0'
|
|
82
|
-
- !ruby/object:Gem::Dependency
|
|
83
|
-
name: rubocop
|
|
84
|
-
requirement: !ruby/object:Gem::Requirement
|
|
85
|
-
requirements:
|
|
86
|
-
- - ">="
|
|
87
|
-
- !ruby/object:Gem::Version
|
|
88
|
-
version: '0'
|
|
89
|
-
type: :development
|
|
90
|
-
prerelease: false
|
|
91
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
92
|
-
requirements:
|
|
93
|
-
- - ">="
|
|
94
|
-
- !ruby/object:Gem::Version
|
|
95
|
-
version: '0'
|
|
96
|
-
- !ruby/object:Gem::Dependency
|
|
97
|
-
name: rubocop-rspec
|
|
98
|
-
requirement: !ruby/object:Gem::Requirement
|
|
99
|
-
requirements:
|
|
100
|
-
- - ">="
|
|
101
|
-
- !ruby/object:Gem::Version
|
|
102
|
-
version: '0'
|
|
103
|
-
type: :development
|
|
104
|
-
prerelease: false
|
|
105
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
106
|
-
requirements:
|
|
107
|
-
- - ">="
|
|
108
|
-
- !ruby/object:Gem::Version
|
|
109
|
-
version: '0'
|
|
110
|
-
- !ruby/object:Gem::Dependency
|
|
111
|
-
name: rubocop-rspec_rails
|
|
112
|
-
requirement: !ruby/object:Gem::Requirement
|
|
113
|
-
requirements:
|
|
114
|
-
- - ">="
|
|
115
|
-
- !ruby/object:Gem::Version
|
|
116
|
-
version: '0'
|
|
117
|
-
type: :development
|
|
118
|
-
prerelease: false
|
|
119
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
120
|
-
requirements:
|
|
121
|
-
- - ">="
|
|
122
|
-
- !ruby/object:Gem::Version
|
|
123
|
-
version: '0'
|
|
124
|
-
- !ruby/object:Gem::Dependency
|
|
125
|
-
name: sqlite3
|
|
126
|
-
requirement: !ruby/object:Gem::Requirement
|
|
127
|
-
requirements:
|
|
128
|
-
- - ">="
|
|
129
|
-
- !ruby/object:Gem::Version
|
|
130
|
-
version: '0'
|
|
131
|
-
type: :development
|
|
61
|
+
type: :runtime
|
|
132
62
|
prerelease: false
|
|
133
63
|
version_requirements: !ruby/object:Gem::Requirement
|
|
134
64
|
requirements:
|
|
135
65
|
- - ">="
|
|
136
66
|
- !ruby/object:Gem::Version
|
|
137
67
|
version: '0'
|
|
138
|
-
description: A collection of
|
|
68
|
+
description: A collection of useful Rake tasks for Rails.
|
|
139
69
|
email:
|
|
140
70
|
- sunny@sunfox.org
|
|
141
71
|
executables: []
|
|
@@ -153,8 +83,11 @@ files:
|
|
|
153
83
|
- lib/tasks/rateaux_cache_clear.rake
|
|
154
84
|
- lib/tasks/rateaux_copy_non_digested_assets.rake
|
|
155
85
|
- lib/tasks/rateaux_db.rake
|
|
86
|
+
- lib/tasks/rateaux_db_migrate.rake
|
|
87
|
+
- lib/tasks/rateaux_db_schema_print_dump.rake
|
|
156
88
|
- lib/tasks/rateaux_db_schema_view.rake
|
|
157
89
|
- lib/tasks/rateaux_git_checkout.rake
|
|
90
|
+
- lib/tasks/rateaux_i18n_word_count.rake
|
|
158
91
|
- lib/tasks/rateaux_notes_mine.rake
|
|
159
92
|
- lib/tasks/rateaux_sidekiq_flush.rake
|
|
160
93
|
homepage: http://github.com/sunny/rateaux
|
|
@@ -168,7 +101,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
168
101
|
requirements:
|
|
169
102
|
- - ">="
|
|
170
103
|
- !ruby/object:Gem::Version
|
|
171
|
-
version: 2
|
|
104
|
+
version: '3.2'
|
|
172
105
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
173
106
|
requirements:
|
|
174
107
|
- - ">="
|
|
@@ -177,5 +110,5 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
177
110
|
requirements: []
|
|
178
111
|
rubygems_version: 3.6.2
|
|
179
112
|
specification_version: 4
|
|
180
|
-
summary: A collection of
|
|
113
|
+
summary: A collection of useful Rake tasks for Rails.
|
|
181
114
|
test_files: []
|