tmp 4.0.0 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 483eb950ab983710d8486dda03faa403671d3b68
4
- data.tar.gz: a8028f1d1e5c48228216b3492376fdb209a54b55
3
+ metadata.gz: b63871da5854ee49651dc7047a3b727bb6f0bb35
4
+ data.tar.gz: 20264ee3627c2290530ac350b7c1b85e810ddb88
5
5
  SHA512:
6
- metadata.gz: 453c5af9abca249cc6a9a6045b980a1dc5a4ca7637ebdd614ef7718903c6e37838be55322215d180fa139d3a015f1f96e259c923f8d34146e5506ec6230fe2dd
7
- data.tar.gz: 8585bdb016f1ec0e4a5e572e96a22cc732e5079701154f13ae775a57ca085d89948c2e3630618904eda9e67d43a4a7bb51f7f44d3178a8cf7f94fe58616c8384
6
+ metadata.gz: ec4c05025a24207e28dd220ca8984d34079268b3eb31445476e020a0fb41a2f99f3e7d14c8b14af8de2b2899f3d09273737e872f30f4d440e4c0c080343a16c1
7
+ data.tar.gz: a23973ca4932fbd7f7e0d792da7b2c1dac40f180bea277bef4c33675afbedecdd15c1cad6ba45e637566ab6e0a9436cba55bf8f1e64b8118207f9ac2ce172c30
data/.gitignore CHANGED
@@ -7,9 +7,6 @@
7
7
  /InstalledFiles
8
8
  /pkg/
9
9
  /spec/reports/
10
- /test/tmp/
11
- /test/version_tmp/
12
- /tmp/
13
10
 
14
11
  ## Specific to RubyMotion:
15
12
  .dat*
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- tmp (4.0.0.alpha)
4
+ tmp (4.0.0)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
data/VERSION CHANGED
@@ -1 +1 @@
1
- 4.0.0
1
+ 4.1.0
@@ -0,0 +1,186 @@
1
+ #encoding: UTF-8
2
+ module TMP
3
+
4
+ module CORE
5
+
6
+ def project_name name_string= nil
7
+
8
+ unless name_string.nil?
9
+
10
+ unless name_string.class <= String
11
+ raise ArgumentError,"invalid name string"
12
+ end
13
+
14
+ @project_name = name_string
15
+
16
+ end
17
+
18
+ @project_name || Dir.pwd.split(File::Separator).last.to_s
19
+
20
+ end
21
+
22
+ alias :project_folder :project_name
23
+
24
+ def tmpdir
25
+ ::Dir.tmpdir
26
+ end
27
+
28
+ def default_folder_path
29
+ File.join( tmpdir , project_name )
30
+ end
31
+
32
+ @folder_path= nil
33
+ def tmp_folder_path path_string= nil
34
+
35
+ $stderr.puts('warning this is deprecated, will be removed in the further releases!(tmp gem)')
36
+
37
+ unless path_string.nil?
38
+
39
+ unless path_string.class <= String
40
+ raise ArgumentError,"invalid path class, must be string like"
41
+ end
42
+
43
+ @folder_path = File.absolute_path(path_string)
44
+
45
+ end
46
+
47
+ @folder_path || default_folder_path
48
+
49
+ end
50
+
51
+ alias :folder_path :tmp_folder_path
52
+
53
+ def tmp_folder_init
54
+
55
+ begin
56
+
57
+ Dir.mkdir tmp_folder_path
58
+ return true
59
+
60
+ rescue Errno::EEXIST
61
+ return false
62
+ end
63
+
64
+ end
65
+
66
+ alias :folder_init :tmp_folder_init
67
+
68
+ def write variable_name, data_object
69
+
70
+ $stderr.puts('warning this is deprecated, will be removed in the further releases!(tmp gem)')
71
+
72
+ tmp_folder_init
73
+
74
+ File.open( File.join(tmp_folder_path,variable_name.to_s) ,"w") do |file|
75
+ return file.write ::Marshal.dump(data_object)
76
+ end
77
+
78
+ end
79
+
80
+ def block variable_name, *args, &block_obj
81
+
82
+ $stderr.puts('warning this is deprecated, will be removed in the further releases!(tmp gem)')
83
+
84
+ tmp_folder_init
85
+
86
+ options = args.select{|e|(e.class <= ::Hash)}.reduce({},:merge!)
87
+ args.select!{|e|!(e.class <= ::Hash)}
88
+
89
+ options[:file_extension] ||= options[:extension] || options[:ext]
90
+ file_name = variable_name.to_s
91
+ options[:file_mod] ||= options[:mod] || args[0].class <= ::String ? args[0] : nil
92
+
93
+ unless options[:file_extension].nil?
94
+
95
+ while options[:file_extension][0] == '.'
96
+ options[:file_extension][0]= ''
97
+ end
98
+
99
+ file_name += ".#{options[:file_extension]}"
100
+
101
+ end
102
+
103
+ if File.exist?(File.join( tmp_folder_path, file_name ))
104
+ options[:file_mod] ||= "r+"
105
+ else
106
+ options[:file_mod] ||= "w+"
107
+ end
108
+
109
+ begin
110
+ return File.open( File.join( tmp_folder_path, file_name ), options[:file_mod], &block_obj )
111
+ rescue Errno::ENOENT
112
+ var_file= File.new( File.join( tmp_folder_path, file_name ), options[:file_mod])
113
+ block_obj.call(var_file) unless block_obj.nil?
114
+ var_file.close
115
+ end
116
+
117
+ end
118
+
119
+ def read variable_name
120
+
121
+ $stderr.puts('warning this is deprecated, will be removed in the further releases!(tmp gem)')
122
+
123
+ unless File.exist?(File.join( tmp_folder_path,variable_name.to_s))
124
+ return nil
125
+ end
126
+
127
+ File.open( File.join( tmp_folder_path,variable_name.to_s ) ,"r+") do |file|
128
+
129
+ var= file.read
130
+ begin
131
+ return ::Marshal.load var
132
+ rescue
133
+ return var
134
+ end
135
+
136
+ end
137
+
138
+ end
139
+
140
+ def path variable_name,*args
141
+
142
+ $stderr.puts('warning this is deprecated, will be removed in the further releases!(tmp gem)')
143
+
144
+ options = args.select{|e|(e.class <= ::Hash)}.reduce({},:merge!)
145
+ args.select!{|e|!(e.class <= ::Hash)}
146
+
147
+ variable_name = variable_name.to_s
148
+ options[:file_extension] ||= options[:extension] || options[:ext]
149
+ unless options[:file_extension].nil?
150
+ while options[:file_extension][0] == '.'
151
+ options[:file_extension][0]= ''
152
+ end
153
+ variable_name += ".#{options[:file_extension]}"
154
+ end
155
+
156
+ tmp_folder_init
157
+ path_to_file= File.join( tmp_folder_path, variable_name )
158
+ unless File.exist?(path_to_file)
159
+ File.open( path_to_file ,"w") {|f| f.write(""); f.close }
160
+ end
161
+ return path_to_file
162
+
163
+ end
164
+
165
+ def purge_files
166
+
167
+ Dir.glob( File.join( tmp_folder_path,'**','*' ) ).map do |file_path|
168
+
169
+ begin
170
+ File.delete file_path
171
+ rescue Errno::ENOENT => ex
172
+ ex
173
+ end
174
+
175
+ end
176
+
177
+ end
178
+
179
+ alias :purge! :purge_files
180
+ alias :purge :purge_files
181
+
182
+ end
183
+
184
+ extend CORE
185
+
186
+ end
@@ -0,0 +1,3 @@
1
+ module TMP::DCI
2
+ require 'tmp/dci/syntax_sugar'
3
+ end
@@ -0,0 +1,62 @@
1
+ #encoding: UTF-8
2
+ module TMP
3
+
4
+ module DSLCore
5
+
6
+ def target_obj obj=nil
7
+
8
+ @target_obj= obj unless obj.nil?
9
+ @target_obj || ::TMP
10
+
11
+ end
12
+
13
+ def method_missing( method, *args, &block )
14
+
15
+ if method.to_s.reverse[0] == '='
16
+
17
+ target_obj.__send__ :write, method.to_s.reverse.sub('=','').reverse, args.first
18
+ return args.first
19
+
20
+ else
21
+
22
+ unless block.nil?
23
+
24
+ return target_obj.__send__ :block, method, *args, &block
25
+
26
+ else
27
+
28
+ if method =~ /^\w+__path__$/
29
+ return target_obj.__send__ :path, method.to_s.sub!( /__path__$/,"" ),*args
30
+ else
31
+ return target_obj.__send__ :read, method
32
+ end
33
+
34
+ end
35
+
36
+ end
37
+
38
+ end
39
+
40
+ end
41
+
42
+ module DSL
43
+
44
+ extend ObjectExt
45
+ extend DSLCore
46
+ privatize
47
+
48
+ end
49
+
50
+ module SyntaxSugar
51
+
52
+ def __tmp__
53
+ ::TMP::DSL
54
+ end
55
+
56
+ alias :__TMP__ :__tmp__
57
+
58
+ end
59
+
60
+ end
61
+
62
+ Object.__send__ :include, ::TMP::SyntaxSugar
@@ -0,0 +1,49 @@
1
+ #encoding: UTF-8
2
+ module TMP
3
+
4
+ class InstanceCore
5
+
6
+ include CORE
7
+
8
+ def initialize path_string
9
+
10
+ unless path_string.class <= String
11
+ raise ArgumentError, "path must be a string like type"
12
+ end
13
+
14
+ folder_path path_string
15
+
16
+ end
17
+
18
+ end
19
+
20
+ class InstanceDSL
21
+
22
+ extend ObjectExt
23
+ include DSLCore
24
+
25
+ def initialize path_string
26
+ target_obj InstanceCore.new( path_string )
27
+ end
28
+
29
+ privatize t: 'instance'
30
+
31
+ public
32
+
33
+
34
+ def tmp_class_instance_object
35
+ target_obj
36
+ end
37
+
38
+ end
39
+
40
+ class << self
41
+
42
+ def new *args
43
+ InstanceDSL.new *args
44
+ end
45
+ alias :init :new
46
+
47
+ end
48
+
49
+ end
@@ -0,0 +1,92 @@
1
+ #encoding: UTF-8
2
+ module TMP
3
+
4
+ module ObjectExt
5
+
6
+ def privatize opts= {}
7
+
8
+ unless opts.class <= Hash
9
+ raise ArgumentError,"invalid input for options"
10
+ end
11
+
12
+ %W[ e ex exc ].each do |str_sym|
13
+ opts[:exclude] ||= opts[str_sym.to_sym]
14
+ end
15
+
16
+ %W[ i in inc only methods ].each do |str_sym|
17
+ opts[:include] ||= opts[str_sym.to_sym]
18
+ end
19
+
20
+ %W[ t target ].each do |str_sym|
21
+ opts[:target] ||= opts[str_sym.to_sym]
22
+ end
23
+
24
+ opts[:target] ||= 's'
25
+ opts[:target]= opts[:target].to_s.downcase
26
+
27
+ unless opts[:target][0] == "s" || opts[:target][0] == "i"
28
+ %W[ singleton instance ].include?(opts[:target].to_s)
29
+ raise ArgumentError, [
30
+ "invalid options for target, you should use the following: ",
31
+ "\n\tsingleton for targeting the singleton class what is de",
32
+ "fault\n\tinstance for targeting the object instance methods."
33
+ ].join
34
+ end
35
+
36
+ opts[:exclude] ||= []
37
+
38
+ if opts[:target][0] == 'i' && self.class <= Module
39
+ opts[:include] ||= self.instance_methods.map{|e| e.to_s }
40
+ else
41
+ opts[:target]= 's'
42
+ opts[:include] ||= self.methods.map{|e| e.to_s }
43
+
44
+ end
45
+
46
+ [:include,:exclude].each do |array_name|
47
+
48
+ unless opts[array_name].class <= Array
49
+ opts[array_name]= [ opts[array_name] ]
50
+ end
51
+
52
+ opts[array_name].map!{ |element| ( element.class == String ? element : element.to_s ) }
53
+
54
+ end
55
+
56
+ opts[:exclude].push('__send__').push('object_id')
57
+
58
+ if opts[:target][0] == 's'
59
+
60
+ self.instance_eval do
61
+
62
+ opts[:include].each do |sym|
63
+
64
+ unless opts[:exclude].include?(sym)
65
+ (class << self; self; end).__send__ :private, sym
66
+ end
67
+
68
+ end
69
+ end
70
+
71
+ elsif opts[:target][0] == 'i'
72
+
73
+ opts[:include].each do |sym|
74
+
75
+ unless opts[:exclude].include?(sym)
76
+ self.__send__ :private, sym
77
+ end
78
+
79
+ end
80
+
81
+ else
82
+ STDERR.puts "invalid target definition"
83
+
84
+ end
85
+
86
+
87
+ end
88
+
89
+ end
90
+
91
+
92
+ end
@@ -0,0 +1,60 @@
1
+ class TMP::Instance
2
+
3
+ attr_reader :tmpdir
4
+
5
+ def initialize(tmp_folder=nil)
6
+ @tmpdir = tmp_folder || get_system_tmpdir
7
+ end
8
+
9
+ def []=(file_name, dump_object)
10
+ open(file_name, 'w+') do |file|
11
+ file.write(Marshal.dump(dump_object))
12
+ end
13
+ end
14
+
15
+ def [](file_name)
16
+ open(file_name, 'r') do |f|
17
+ begin
18
+ Marshal.load(f.read)
19
+ rescue ArgumentError => ex
20
+ ex.message.to_s.include?('marshal') ? nil : raise(ex)
21
+ end
22
+ end
23
+ end
24
+
25
+ def open(file_name, *args)
26
+
27
+ file_path = path_for(file_name)
28
+
29
+ File.open(file_path, *args) do |f|
30
+ begin
31
+ f.flock(File::LOCK_EX)
32
+ yield(f)
33
+ ensure
34
+ f.flock(File::LOCK_UN)
35
+ end
36
+ end
37
+
38
+ rescue Errno::ENOENT
39
+ File.open(file_path, 'a') {}
40
+ retry
41
+ end
42
+
43
+ def path_for(file_name)
44
+ File.join(tmpdir, file_name)
45
+ end
46
+
47
+ protected
48
+
49
+ def get_system_tmpdir
50
+
51
+ require 'tmpdir'
52
+ require 'securerandom'
53
+ tmp_dir_to_use = File.join(Dir.tmpdir,SecureRandom.uuid.to_s)
54
+ Dir.mkdir(tmp_dir_to_use) unless File.exist?(tmp_dir_to_use)
55
+
56
+ return tmp_dir_to_use
57
+
58
+ end
59
+
60
+ end
@@ -0,0 +1,157 @@
1
+ require_relative '../spec_helper'
2
+ describe TMP::Instance do
3
+
4
+ let(:tmp_folder_path){'/tmp/folder/path'}
5
+ subject{ self.described_class.new(tmp_folder_path)}
6
+
7
+ before{ allow(Dir).to receive(:mkdir).and_return(true) }
8
+
9
+ describe '#initialize' do
10
+
11
+ context 'when tmp folder path not given' do
12
+
13
+ subject{ self.described_class.new }
14
+ it 'should initialize, and set the default tmp folder by the system' do
15
+
16
+ require 'securerandom'
17
+ require 'tmpdir'
18
+
19
+ expect(SecureRandom).to receive(:uuid).and_return('uuid')
20
+ expect(subject.instance_variable_get(:@tmpdir)).to eq File.join(Dir.tmpdir,'uuid')
21
+
22
+ end
23
+
24
+ end
25
+
26
+ context 'when folder path passed to the initialization' do
27
+
28
+ it 'should return the path that passed on initialization' do
29
+ expect(subject.instance_variable_get(:@tmpdir)).to eq tmp_folder_path
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+
36
+ describe '#tmpdir' do
37
+
38
+ it 'should return the @tmpdir content' do
39
+ expect( subject.tmpdir ).to eq subject.instance_variable_get(:@tmpdir)
40
+ end
41
+
42
+ end
43
+
44
+ describe 'File Accessors' do
45
+
46
+ let(:file_mock){double('file mock')}
47
+ let(:sample_object){{name: 'test',content: 'Sample Object'}}
48
+
49
+ describe '#[]=' do
50
+
51
+ context 'when block not given' do
52
+
53
+ it 'should marshal dump to a temp file by the given name' do
54
+
55
+ expect( subject ).to receive(:open).with( sample_object[:name], 'w+' ).and_yield(file_mock)
56
+ expect( file_mock ).to receive(:write).with(Marshal.dump(sample_object[:content]))
57
+ expect( subject[sample_object[:name]]= sample_object[:content] ).to eq sample_object[:content]
58
+
59
+ end
60
+
61
+ end
62
+
63
+ end
64
+
65
+ describe '#[]' do
66
+
67
+ context 'when valid marshal data in the file' do
68
+
69
+ it 'should read a tmp file content by unserialize and returning object' do
70
+
71
+ expect( subject ).to receive(:open).with(sample_object[:name],'r').and_yield(file_mock)
72
+ expect( file_mock ).to receive(:read).and_return(Marshal.dump(sample_object[:content]))
73
+ expect( subject[sample_object[:name]] ).to eq sample_object[:content]
74
+
75
+ end
76
+
77
+ end
78
+
79
+ context 'when marshal data too short' do
80
+
81
+ it 'should return a nil' do
82
+
83
+ expect( subject ).to receive(:open).with(sample_object[:name],'r').and_yield(file_mock)
84
+ expect( file_mock ).to receive(:read).and_return('')
85
+ expect( subject[sample_object[:name]] ).to eq nil
86
+
87
+ end
88
+
89
+ end
90
+
91
+ end
92
+
93
+ describe '#open' do
94
+
95
+ let(:file_open_mode){'r+'}
96
+
97
+ before do
98
+ allow(file_mock).to receive(:flock)
99
+ end
100
+
101
+ context 'when file exist' do
102
+ it 'should send lock signal thought the os for the file for a given block' do
103
+
104
+ expect(File).to receive(:open).with(File.join(tmp_folder_path,sample_object[:name]),file_open_mode).and_yield(file_mock)
105
+
106
+ expect(file_mock).to receive(:flock).with(File::LOCK_EX)
107
+ expect(file_mock).to receive(:flock).with(File::LOCK_UN)
108
+
109
+ block_ran = false
110
+ subject.open( sample_object[:name], file_open_mode ) do |f|
111
+ expect(f).to eq file_mock
112
+ block_ran = true
113
+ end
114
+
115
+ expect(block_ran).to be_truthy
116
+
117
+ end
118
+ end
119
+
120
+ context 'when file not exist' do
121
+
122
+ it 'should rescue ENOENT exception, create an empty file and retry' do
123
+
124
+ expect(File).to receive(:open).with(File.join(tmp_folder_path,sample_object[:name]),file_open_mode).once.and_raise(Errno::ENOENT)
125
+ expect(File).to receive(:open).with(File.join(tmp_folder_path,sample_object[:name]),'a')
126
+
127
+ expect(File).to receive(:open).with(File.join(tmp_folder_path,sample_object[:name]),file_open_mode).and_yield(file_mock)
128
+
129
+ expect(file_mock).to receive(:flock).with(File::LOCK_EX)
130
+ expect(file_mock).to receive(:flock).with(File::LOCK_UN)
131
+
132
+ block_ran = false
133
+ subject.open( sample_object[:name], file_open_mode ) do |f|
134
+ expect(f).to eq file_mock
135
+ block_ran = true
136
+ end
137
+
138
+ expect(block_ran).to be_truthy
139
+
140
+ end
141
+
142
+
143
+ end
144
+
145
+ end
146
+
147
+ describe '#path_for' do
148
+
149
+ it 'should return a full path for a given name that is located in the current tmp directory' do
150
+ expect(subject.path_for(sample_object[:name])).to eq File.join(tmp_folder_path,sample_object[:name])
151
+ end
152
+
153
+ end
154
+
155
+ end
156
+
157
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tmp
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 4.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Luzsi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-10 00:00:00.000000000 Z
11
+ date: 2015-06-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -75,15 +75,16 @@ files:
75
75
  - Rakefile
76
76
  - VERSION
77
77
  - bin/console
78
- - examples/blocks.rb
79
- - examples/config_exmpl.rb
80
- - examples/instance.rb
81
- - examples/path.rb
82
- - examples/sugar_use.rb
83
- - examples/test.rb
84
78
  - files.rb
85
79
  - lib/tmp.rb
80
+ - lib/tmp/deprecated/core.rb
81
+ - lib/tmp/deprecated/dci.rb
82
+ - lib/tmp/deprecated/dsl.rb
83
+ - lib/tmp/deprecated/init.rb
84
+ - lib/tmp/deprecated/sup.rb
85
+ - lib/tmp/instance.rb
86
86
  - spec/spec_helper.rb
87
+ - spec/tmp/instance_spec.rb
87
88
  - tmp.gemspec
88
89
  homepage: https://github.com/adamluzsi/tmp
89
90
  licenses:
@@ -111,3 +112,4 @@ specification_version: 4
111
112
  summary: DSL for temporally files read/write in the object oriented way (system tmp)
112
113
  test_files:
113
114
  - spec/spec_helper.rb
115
+ - spec/tmp/instance_spec.rb
@@ -1,50 +0,0 @@
1
- require 'tmp'
2
-
3
- TMP.purge!
4
- # using blocks is simply as this
5
- __tmp__.some_file_name "w+" do |file|
6
- file.write Random.rand(1000...9999)
7
- end
8
-
9
- __tmp__.some_file_name do |file|
10
- puts file.readline #> some random number
11
- end
12
-
13
- # reopen the new file is also simple
14
- __tmp__.some_file_name do |file|
15
-
16
- while line = file.gets
17
- #> some random number same as above
18
- puts line
19
- end
20
-
21
- end
22
-
23
- # you can set the file mod if you like, by default it's based on file e
24
- __tmp__.some_file_name "w+" do |file|
25
-
26
- puts file.readlines.inspect #> [] empty array because the file got w+ command
27
-
28
- file.write "Hello world!"
29
-
30
- end
31
-
32
- __tmp__.some_file_name do |file|
33
- puts file.gets.inspect #> "Hello world!"
34
- end
35
-
36
- puts __tmp__.some_file_name__path__
37
-
38
- puts __tmp__.some_file_name.inspect #> it's a string from the file we made
39
-
40
-
41
- TMP.purge!.inspect
42
-
43
- #> file_with_extension.rb
44
- __tmp__.file_with_extension ext: 'rb' do |file|
45
- file.write "hello world!"
46
- end
47
-
48
- __tmp__.file_with_extension ext: 'rb' do |file|
49
- puts file.read
50
- end
@@ -1,23 +0,0 @@
1
- require 'tmp'
2
-
3
- TMP.folder_path File.expand_path(File.join(File.dirname(__FILE__),'tmp_folder'))
4
-
5
- # except the default folder path, everything is opt able
6
- puts "","default tmp folder:",
7
- TMP.default_folder_path,"",
8
-
9
- "new tmp folder for use:",
10
- TMP.folder_path,"",
11
-
12
- "the project name what is used:",
13
- TMP.project_name,""
14
-
15
- # you can trigger the tmp folder generating by the following
16
- TMP.folder_init #> || tmp_folder_init
17
-
18
- # or you can use syntax sugar!
19
- __tmp__.hello = { hello: 'world'}
20
-
21
- # defined variable
22
- puts __tmp__.hello #> { hello: 'world'}
23
-
@@ -1,30 +0,0 @@
1
- require 'tmp'
2
-
3
-
4
- tmp_instance= TMP.new( File.expand_path(File.join(File.dirname(__FILE__),'tmp_folder')) )
5
-
6
- # use the same as the TMP::DSL aka tmp method
7
-
8
- # let's set a string for this one
9
- tmp_instance.test= "hello"
10
-
11
- # get the string what we just set now
12
- tmp_instance.test #> "hello"
13
-
14
- # you can get the tmp class instance obj like this:
15
- tmp_instance.tmp_class_instance_object #> return the tmp_instance
16
-
17
- # return the tmp folder path
18
- tmp_instance.tmp_class_instance_object.folder_path
19
-
20
- # Remember this instance use different folder thant the main TMP::DSL
21
- __tmp__.test.inspect #> nil, because it was never used before
22
- #> the tmp method is same like invoke the TMP::DSL module
23
-
24
- tmp_instance.test_file do |file|
25
- file.write "hello world!"
26
- end
27
-
28
- tmp_instance.test_file do |file|
29
- file.read
30
- end
@@ -1,7 +0,0 @@
1
- require 'tmp'
2
-
3
- puts __tmp__.random #> nil or empty string because never used or just fresh inited file
4
- puts __tmp__.random__path__ #> path to random named file,
5
- # if not exist, make an empty one
6
-
7
- puts __tmp__.random__path__ ext: 'rb' #> path to random named file,
@@ -1,18 +0,0 @@
1
- require 'tmp'
2
-
3
- TMP.write :test2, {hello: 'world'}
4
- puts TMP.read(:test2)
5
-
6
- #or you can use syntax sugar!
7
- __tmp__.hello= { hello: 'world'}
8
-
9
- # defined variable
10
- puts __tmp__.hello #> { hello: 'world'}
11
-
12
- # undefined variable
13
- puts __tmp__.sup #> nil
14
-
15
- TMP.purge!
16
-
17
- # call after tmp is purged
18
- puts __tmp__.hello #> nil
@@ -1,6 +0,0 @@
1
- require 'tmp'
2
- require 'securerandom'
3
-
4
- tmp= TMP.new File.join TMP.tmpdir,SecureRandom.uuid
5
- $stdout.reopen tmp.test__path__
6
- puts "hello world"