ファイル名に_smart_phoneをつけて複製

スマートフォンサイトの表示にjpmobileを使ってます。
これはこのようにApplicationcontrollerとかに書くと

1
2
3
class ApplicationController < ActionController::Base
  include Jpmobile::ViewSelector
end

PCからのアクセスの場合にはindex.html.erbを表示し
スマートフォンからのアクセスの場合にはindex_smart_phone.html.erbを表示してくれるという機能を使っています。

今回先にPCサイトがあり、それのスマフォサイトを作るにあたってPCのファイルを上記命名規則に則ってコピーする必要があったのでスクリプト書きました。

convert_smartphone_name
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#! /usr/bin/env ruby
require 'fileutils'

def print_green(str)
  puts "\e[32m#{str}\e[0m"
end

def print_red(str)
  puts "\e[31m#{str}\e[0m"
end

def print_yellow(str)
  puts "\e[33m#{str}\e[0m"
end

if ARGV[0].nil?
  print_red "対象ディレクトリへのパスを指定してください"
end

Dir.glob('*').each do |file|
  next if FileTest::directory?(file)
  dest = file.split(".").inject(String.new) do |str, chunk|
    if chunk == "html"
      str << "_smart_phone"
    end

    if str == ""
      str << "#{chunk}"
    else
      str << ".#{chunk}"
    end
  end

  print_yellow "convert #{file} to #{dest}"
  FileUtils.cp(file, dest)
end

print_green "done."

これを実行可能なところにおいて、chmod +xで実行可能にしてもらって、
convert_smartphone_name [対象ディレクトリのパス]
とかってやれば対象ディレクトリ内のファイルが全部_smart_phone付きでコピーされるはずです。

Comments