md5app 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +33 -0
- data/lib/md5app.rb +3 -0
- data/lib/md5app/md5_dir.rb +46 -0
- data/lib/md5app/railtie.rb +10 -0
- data/lib/md5app/tasks/run.rake +9 -0
- metadata +49 -0
data/README.md
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
md5app
|
2
|
+
======
|
3
|
+
|
4
|
+
Сохраняет md5 суммы файлов проекта в дирректорию log/md5app/
|
5
|
+
|
6
|
+
### Установка
|
7
|
+
|
8
|
+
```ruby
|
9
|
+
gem 'md5app'
|
10
|
+
```
|
11
|
+
|
12
|
+
### Запуск
|
13
|
+
|
14
|
+
```sh
|
15
|
+
$ rake md5app:run
|
16
|
+
```
|
17
|
+
### Настройки
|
18
|
+
|
19
|
+
Есть возможность выборочного игнорирования определенных файлов и дирректорий
|
20
|
+
аналогично .gitignore
|
21
|
+
|
22
|
+
### Пример .md5ignore
|
23
|
+
|
24
|
+
```
|
25
|
+
.git
|
26
|
+
log
|
27
|
+
public/assets
|
28
|
+
public/uploads
|
29
|
+
tmp
|
30
|
+
```
|
31
|
+
### Запуск по расписанию
|
32
|
+
|
33
|
+
Рекомендуется использовать [whenewer gem](https://github.com/javan/whenever).
|
data/lib/md5app.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'digest/md5'
|
2
|
+
|
3
|
+
module Md5app
|
4
|
+
class Md5Dir
|
5
|
+
def initialize(root, file=nil)
|
6
|
+
@file = file || STDOUT
|
7
|
+
@root = File.absolute_path(root)
|
8
|
+
unless File.exists?("#{@root}/.md5ignore")
|
9
|
+
@skip_paths = []
|
10
|
+
else
|
11
|
+
@skip_paths = File.new("#{@root}/.md5ignore").readlines.map do |line|
|
12
|
+
line = line[/\A#/] ? nil : line.chomp.strip
|
13
|
+
line = line && line.empty? ? nil : line
|
14
|
+
line
|
15
|
+
end.compact
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def build_tree
|
20
|
+
recursive(@root)
|
21
|
+
end
|
22
|
+
|
23
|
+
def recursive(dir, depth=0)
|
24
|
+
Dir.chdir(dir) do
|
25
|
+
Dir.entries(Dir.pwd).sort.each do |entry|
|
26
|
+
next if ['.', '..'].include?(entry)
|
27
|
+
|
28
|
+
skip = false
|
29
|
+
@skip_paths.each do |mask|
|
30
|
+
skip = File.fnmatch("#{@root}/#{mask}", File.absolute_path(entry))
|
31
|
+
break if skip
|
32
|
+
end
|
33
|
+
next if skip
|
34
|
+
|
35
|
+
if File.file?(entry)
|
36
|
+
@file.print Digest::MD5.hexdigest(File.read(entry)), ' ', File.absolute_path(entry), "\n"
|
37
|
+
end
|
38
|
+
|
39
|
+
if File.directory?(entry) && !File.symlink?(entry)
|
40
|
+
recursive(entry, depth + 1)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
namespace :md5app do
|
2
|
+
task :run do
|
3
|
+
Dir.mkdir('log') unless Dir.exists?('log')
|
4
|
+
Dir.mkdir('log/md5app') unless Dir.exists?('log/md5app')
|
5
|
+
file = File.new("log/md5app/#{Time.now.strftime("%Y%m%d%H%M%S")}.log", 'w+')
|
6
|
+
Md5app::Md5Dir.new(Rails.root.to_s, file).build_tree
|
7
|
+
file.close
|
8
|
+
end
|
9
|
+
end
|
metadata
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: md5app
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: 0.0.1
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Alexander Kiseliov
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-01-16 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: Logs md5 sum of project files
|
15
|
+
email: aakiselev@at-consulting.ru
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- README.md
|
21
|
+
- lib/md5app/tasks/run.rake
|
22
|
+
- lib/md5app/md5_dir.rb
|
23
|
+
- lib/md5app/railtie.rb
|
24
|
+
- lib/md5app.rb
|
25
|
+
homepage: https://github.com/at-consulting/md5app
|
26
|
+
licenses: []
|
27
|
+
post_install_message:
|
28
|
+
rdoc_options: []
|
29
|
+
require_paths:
|
30
|
+
- lib
|
31
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - ! '>='
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '0'
|
36
|
+
none: false
|
37
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ! '>='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
none: false
|
43
|
+
requirements: []
|
44
|
+
rubyforge_project:
|
45
|
+
rubygems_version: 1.8.24
|
46
|
+
signing_key:
|
47
|
+
specification_version: 3
|
48
|
+
summary: md5app
|
49
|
+
test_files: []
|