Skip to content

Commit fa1267e

Browse files
committed
Use Rails.root.join('path/to').to_path instead of .to_s
1 parent e97c93f commit fa1267e

File tree

2 files changed

+57
-57
lines changed

2 files changed

+57
-57
lines changed

lib/rubocop/cop/rails/file_path.rb

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ module Rails
2121
# "#{Rails.root}/app/models/goober"
2222
#
2323
# # good
24-
# Rails.root.join('app/models/goober').to_s
24+
# Rails.root.join('app/models/goober').to_path
2525
#
2626
# @example EnforcedStyle: arguments
2727
# # bad
@@ -35,16 +35,16 @@ module Rails
3535
# "#{Rails.root}/app/models/goober"
3636
#
3737
# # good
38-
# Rails.root.join('app', 'models', 'goober').to_s
38+
# Rails.root.join('app', 'models', 'goober').to_path
3939
#
4040
class FilePath < Base
4141
extend AutoCorrector
4242

4343
include ConfigurableEnforcedStyle
4444
include RangeHelp
4545

46-
MSG_SLASHES = 'Prefer `Rails.root.join(\'path/to\')%<to_s>s`.'
47-
MSG_ARGUMENTS = 'Prefer `Rails.root.join(\'path\', \'to\')%<to_s>s`.'
46+
MSG_SLASHES = 'Prefer `Rails.root.join(\'path/to\')%<to_path>s`.'
47+
MSG_ARGUMENTS = 'Prefer `Rails.root.join(\'path\', \'to\')%<to_path>s`.'
4848
RESTRICT_ON_SEND = %i[join].freeze
4949

5050
def_node_matcher :file_join_nodes?, <<~PATTERN
@@ -83,7 +83,7 @@ def check_for_slash_after_rails_root_in_dstr(node)
8383
return unless slash_node&.str_type? && slash_node.source.start_with?(File::SEPARATOR)
8484
return unless node.children[rails_root_index].children.first.send_type?
8585

86-
register_offense(node, require_to_s: false) do |corrector|
86+
register_offense(node, require_to_path: false) do |corrector|
8787
autocorrect_slash_after_rails_root_in_dstr(corrector, node, rails_root_index)
8888
end
8989
end
@@ -93,7 +93,7 @@ def check_for_extension_after_rails_root_join_in_dstr(node)
9393
extension_node = node.children[rails_root_index + 1]
9494
return unless extension_node?(extension_node)
9595

96-
register_offense(node, require_to_s: false) do |corrector|
96+
register_offense(node, require_to_path: false) do |corrector|
9797
autocorrect_extension_after_rails_root_join_in_dstr(corrector, node, rails_root_index, extension_node)
9898
end
9999
end
@@ -102,7 +102,7 @@ def check_for_file_join_with_rails_root(node)
102102
return unless file_join_nodes?(node)
103103
return unless valid_arguments_for_file_join_with_rails_root?(node.arguments)
104104

105-
register_offense(node, require_to_s: true) do |corrector|
105+
register_offense(node, require_to_path: true) do |corrector|
106106
autocorrect_file_join(corrector, node) unless node.first_argument.array_type?
107107
end
108108
end
@@ -113,7 +113,7 @@ def check_for_rails_root_join_with_string_arguments(node)
113113
return unless rails_root_join_nodes?(node)
114114
return unless valid_string_arguments_for_rails_root_join?(node.arguments)
115115

116-
register_offense(node, require_to_s: false) do |corrector|
116+
register_offense(node, require_to_path: false) do |corrector|
117117
autocorrect_rails_root_join_with_string_arguments(corrector, node)
118118
end
119119
end
@@ -124,7 +124,7 @@ def check_for_rails_root_join_with_slash_separated_path(node)
124124
return unless rails_root_join_nodes?(node)
125125
return unless valid_slash_separated_path_for_rails_root_join?(node.arguments)
126126

127-
register_offense(node, require_to_s: false) do |corrector|
127+
register_offense(node, require_to_path: false) do |corrector|
128128
autocorrect_rails_root_join_with_slash_separated_path(corrector, node)
129129
end
130130
end
@@ -160,20 +160,20 @@ def string_with_leading_slash?(node)
160160
node.str_type? && node.value.start_with?(File::SEPARATOR)
161161
end
162162

163-
def register_offense(node, require_to_s:, &block)
163+
def register_offense(node, require_to_path:, &block)
164164
line_range = node.loc.column...node.loc.last_column
165165
source_range = source_range(processed_source.buffer, node.first_line, line_range)
166166

167-
message = build_message(require_to_s)
167+
message = build_message(require_to_path)
168168

169169
add_offense(source_range, message: message, &block)
170170
end
171171

172-
def build_message(require_to_s)
172+
def build_message(require_to_path)
173173
message_template = style == :arguments ? MSG_ARGUMENTS : MSG_SLASHES
174-
to_s = require_to_s ? '.to_s' : ''
174+
to_path = require_to_path ? '.to_path' : ''
175175

176-
format(message_template, to_s: to_s)
176+
format(message_template, to_path: to_path)
177177
end
178178

179179
def dstr_separated_by_colon?(node)
@@ -205,7 +205,7 @@ def autocorrect_file_join(corrector, node)
205205
replace_receiver_with_rails_root(corrector, node)
206206
remove_first_argument_with_comma(corrector, node)
207207
process_arguments(corrector, node.arguments)
208-
append_to_string_conversion(corrector, node)
208+
append_to_pathtring_conversion(corrector, node)
209209
end
210210

211211
def replace_receiver_with_rails_root(corrector, node)
@@ -234,8 +234,8 @@ def process_arguments(corrector, arguments)
234234
end
235235
end
236236

237-
def append_to_string_conversion(corrector, node)
238-
corrector.insert_after(node, '.to_s')
237+
def append_to_pathtring_conversion(corrector, node)
238+
corrector.insert_after(node, '.to_path')
239239
end
240240

241241
def autocorrect_rails_root_join_with_string_arguments(corrector, node)

0 commit comments

Comments
 (0)