Mám úlohu rake, ktorá premenuje veľa vecí na rôzne súbory. Takže, ak to napíše niekto v termináli cmd
rename:namechange[funk]
kód uvedený nižšie by mal vykonať potrebné vyhľadanie / výmenu. Môj problém je, že túto linku nemôžem uviesť do činnosti.
args[:new_name.capitalize]
Máte nejakú predstavu prečo?
namespace :rename do
desc "changes the name of the app"
task :changename, :new_name do |task, args|
args[:new_name.capitalize]
# change any instances of the term "framework" to the new name of the app
#for testing, just change these: file_names = ["config/environment.rb"] #["config/environments/test.rb", "config/environments/production.rb", "config/environment.rb"]
file_names = ["app/helpers/application_helper.rb", "app/views/pages/home.html.erb", "rakefile", "config/application.rb", "config.ru", "config/database.yml",
"config/environments/development.rb", "config/environments/test.rb", "config/environments/production.rb",
"config/environment.rb", "config/initializers/secret_token.rb", "config/initializers/session_store.rb", "config/routes.rb",
"spec/controllers/pages_controller_spec.rb"]
file_names.each do |file_name|
text = File.read(file_name)
File.open(file_name, "w") { |file| file << text.gsub("Framework", args[:new_name]) }
end
end
end
AKTUALIZÁCIA: Mal som problémy s príponou „.capitalize“, pretože automaticky za každý prvý znak vložil akýkoľvek znak ako malé písmeno. Nakoniec som k tomu dospel:
args[:new_name][0] = args[:new_name].capitalize[0]
odpovede:
1 pre odpoveď č. 1Chceli ste napísať jednu z týchto možností:
args[:new_name].capitalize!
args[:new_name] = args[:new_name].capitalize
2 pre odpoveď č. 2
args[:new_name.capitalize]
Stačí zavolať zarobiť na: new_name symbol návrate: New_name a použije to ako kľúč v args hash. Chceš použiť
args[:new_name].capitalize!
Ktorý bude mať prístup: new_name v args haši a použije ho na svojom mieste