😊

Rubyで環境構築自動化を図る

2024/01/20に公開

Rubyで環境構築自動化を図る

Neovimの設定ファイルをluaで書いていると環境構築が面倒になってきました。Rubyで環境構築自動化を図りたいと想います。実行したら、すべての設定ファイルが任意のフォルダに展開されていること、その設定ファイルが要らなくなればすべて削除できることを前提に書いていきます。それでは、自動化するコード例を書きます。

設定ファイル配置版。 move.rb

# frozen_string_literal: true

require 'fileutils'
require 'rbconfig'

# Install Runner
class InstallRunner
  # default encoding utf-8, change encode here.
  def self.encoding_style
    Encoding.default_internal = 'UTF-8'
    Encoding.default_external = 'UTF-8'
  end

  # multi platform lua settings.
  def self.run
    encoding_style

    host_os = RbConfig::CONFIG['host_os']
    case host_os

    when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
      if Dir.exist?(File.expand_path('~/チェックするフォルダPATH'))
        # puts '既にフォルダがあるメッセージ'
      else
        FileUtils.mkdir(File.expand_path('~/作成するフォルダPATH'))
        FileUtils.cp(['./コピーするファイル1', './コピーするファイル2'], File.expand_path('~/コピー先フォルダPATH'))
        # puts 'コピー完了のメッセージ'
      end

    when /darwin|mac os/
        #...

    when /linux/
        #...

    end
  end
end

begin
  InstallRunner.run
rescue StandardError => e
  puts e.backtrace
ensure
  GC.compact
end

__END__

次は、配置した設定ファイルを消す版。 delete.rb

# frozen_string_literal: true
#!/usr/bin/ruby

require 'fileutils'
require 'rbconfig'

# UnInstall Runner.
class UnInstallRunner
  # default encoding utf-8, change encode here.
  def self.encoding_style
    Encoding.default_internal = 'UTF-8'
    Encoding.default_external = 'UTF-8'
  end

  def self.run
    encoding_style

    host_os = RbConfig::CONFIG['host_os']
    case host_os
    when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
      FileUtils.rm_rf(File.expand_path('~/消すフォルダPATH'))
      # puts 'フォルダを消しましたのメッセージ'
    when /darwin|mac os/
        # ...
    when /linux/
        # ...
    end
  end
end

begin
  UnInstallRunner.run
rescue StandardError => e
  puts e.backtrace
ensure
  GC.compact
end

__END__

このように、配置と削除版を作っておけばその都度、Linuxコマンドを駆使する必要はなくなります。rubyファイルを実行するだけで自動的に環境が作れます。それはマルチプラットフォームで対応できるので、時短になります。私は、Neovimを使うときになるべく環境構築に時間をかけないようにしています。設定は、プラグインの更新時見直し→元の設定削除→新しい設定を反映を繰り返しています。※ Neovimだけでなく設定が必要なテキストエディタが対象です。

どうせなら、コーディングやテストに時間をかけたいので、テキストエディタの設定で悩みたくないですね。

GitHubで編集を提案

Discussion