Class: Jets::Commands::Upgrade

Inherits:
Object
  • Object
show all
Defined in:
lib/jets/commands/upgrade.rb

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ Upgrade

Returns a new instance of Upgrade.



6
7
8
# File 'lib/jets/commands/upgrade.rb', line 6

def initialize(options)
  @options = options
end

Instance Method Details

#environment_configsObject



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/jets/commands/upgrade.rb', line 21

def environment_configs
  path = File.expand_path("templates/skeleton/config/environments", File.dirname(__FILE__))
  puts "path #{path}"
  Dir.glob("#{path}/*").each do |src|
    config_file = "config/environments/#{File.basename(src)}"
    dest = "#{Jets.root}#{config_file}"

    puts "src #{src}"
    puts "dest #{dest}"
    unless File.exist?(dest)
      puts "Create: #{config_file}"
      FileUtils.mkdir_p(File.dirname(dest))
      FileUtils.cp(src, dest)
    end
  end
end

#remove_ruby_lazy_loadObject



89
90
91
92
93
94
95
# File 'lib/jets/commands/upgrade.rb', line 89

def remove_ruby_lazy_load
  app_config = "#{Jets.root}config/application.rb"
  remove_ruby_lazy_load_for(app_config)
  Dir.glob("#{Jets.root}config/environments/*.rb").each do |env_config|
    remove_ruby_lazy_load_for(env_config)
  end
end

#remove_ruby_lazy_load_for(path) ⇒ Object



97
98
99
100
101
102
103
104
105
106
107
# File 'lib/jets/commands/upgrade.rb', line 97

def remove_ruby_lazy_load_for(path)
  lines = IO.readlines(path)
  new_lines = lines.reject do |l|
    l =~ %r{config.ruby.lazy_load}
  end
  return unless lines != new_lines

  content = new_lines.join("")
  IO.write(path, content)
  puts "Update: #{path}"
end

#runObject



10
11
12
13
14
15
16
17
18
19
# File 'lib/jets/commands/upgrade.rb', line 10

def run
  puts "Upgrading to Jets structure to latest version"
  environment_configs
  update_routes
  update_mode_setting
  update_config_ru
  remove_ruby_lazy_load
  update_webpack_binstubs
  puts "Upgrade complete."
end

#update_config_ruObject



79
80
81
82
83
84
85
86
87
# File 'lib/jets/commands/upgrade.rb', line 79

def update_config_ru
  config_ru = File.read("#{Jets.root}config.ru")
  return if config_ru.include?("Jets.boot")

  src = File.expand_path("templates/skeleton/config.ru", File.dirname(__FILE__))
  dest = "#{Jets.root}config.ru"
  puts "Update: config.ru"
  FileUtils.cp(src, dest)
end

#update_mode_settingObject



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/jets/commands/upgrade.rb', line 59

def update_mode_setting
  application_file = "#{Jets.root}config/application.rb"
  lines = IO.readlines(application_file)
  deprecated_code = 'config.api_generator'
  return unless lines.detect { |l| l.include?(deprecated_code) }

  puts "Update: config/application.rb"
  lines.map! do |line|
    if line.include?(deprecated_code)
      mode = Jets.config.api_generator ? 'api' : 'html'
      %Q|  config.mode = "#{mode}"\n| # assume 2 spaces for simplicity
    else
      line
    end
  end

  content = lines.join
  IO.write(application_file, content)
end

#update_routesObject



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/jets/commands/upgrade.rb', line 38

def update_routes
  routes_file = "#{Jets.root}config/routes.rb"
  return unless File.exist?(routes_file)

  lines = IO.readlines(routes_file)
  deprecated_code = 'root "jets/welcome#index"'
  return unless lines.detect { |l| l.include?(deprecated_code) }

  puts "Update: config/routes.rb"
  lines.map! do |line|
    if line.include?(deprecated_code)
      %Q|  root "jets/public#show"\n| # assume 2 spaces for simplicity
    else
      line
    end
  end

  content = lines.join
  IO.write(routes_file, content)
end

#update_webpack_binstubsObject



109
110
111
112
113
114
115
116
117
# File 'lib/jets/commands/upgrade.rb', line 109

def update_webpack_binstubs
  lines = IO.readlines("bin/webpack")
  already_upgraded = lines.detect { |l| l =~ /WebpackRunner/ }
  return if already_upgraded

  update_project_file("bin/webpack")
  update_project_file("bin/webpack-dev-server")
  puts "Updated webpack binstubs."
end