arfy 0.1.3 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +13 -7
- data/lib/arfy/environment_faker.rb +1 -2
- data/lib/arfy/generator.rb +21 -47
- data/lib/arfy/rails_faker.rb +1 -3
- data/lib/arfy/version.rb +1 -1
- data/lib/tasks/all.rb +9 -4
- metadata +4 -4
data/README.md
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# Arfy
|
2
|
-
|
3
|
-
|
4
|
-
## even if you don't use all Rails stack
|
2
|
+
## Allow use ActiveRecord and Migration from Rails
|
3
|
+
(even if you don't use all Rails stack)
|
5
4
|
|
6
5
|
This is a very early implementation, so any comments are wellcome, but
|
7
6
|
we are developing this on a daily basis. Huge changes in few days are
|
@@ -36,14 +35,21 @@ You should see some familiar tasks:
|
|
36
35
|
|
37
36
|
---
|
38
37
|
|
39
|
-
The goal here is to use the Migrations.
|
40
|
-
but for now, you need to use the Rails conventions and create two dirs on
|
41
|
-
your project:
|
42
|
-
|
38
|
+
The goal here is to use the Migrations. You can use the Rails conventions and create two dirs on your project:
|
43
39
|
your_project/
|
44
40
|
db/migrate/
|
45
41
|
config/
|
46
42
|
|
43
|
+
To generate a skeleton for a migration, use the task:
|
44
|
+
|
45
|
+
rake generate:migration NAME=my-MigrationName
|
46
|
+
|
47
|
+
(The awkward name here is just to illustrate that the task will create a file with a pretty name for you, something like:
|
48
|
+
20110920000101_my_migration_name.rb)
|
49
|
+
|
50
|
+
A new file, with the timestamp as a prefix on name, will be generated on
|
51
|
+
db/migrate or on the path pointed by the OUTDIR option.
|
52
|
+
|
47
53
|
Create your migration files, following the [Rails docs](http://api.rubyonrails.org/classes/ActiveRecord/Migration.html).
|
48
54
|
|
49
55
|
Inside config, create your database.yml, just like you can do with
|
data/lib/arfy/generator.rb
CHANGED
@@ -1,16 +1,3 @@
|
|
1
|
-
#activerecord generators
|
2
|
-
#TODO: instalador com download dos arquivos rails de quem esse generator
|
3
|
-
#depende
|
4
|
-
# rails/generators/name_based: https://github.com/rails/rails/blob/master/railties/lib/rails/generators/named_base.rb
|
5
|
-
# rails/generators/migration: https://github.com/rails/rails/blob/master/railties/lib/rails/generators/migration.rb
|
6
|
-
# rails/generators/active_modle: https://github.com/rails/rails/blob/master/railties/lib/rails/generators/active_model.rb
|
7
|
-
|
8
|
-
#require 'rails/generators/active_record'
|
9
|
-
#
|
10
|
-
#
|
11
|
-
|
12
|
-
# heavily inspired/copyied from: https://github.com/rails/rails/blob/master/railties/lib/rails/generators/migration.rb
|
13
|
-
|
14
1
|
require 'erb'
|
15
2
|
|
16
3
|
module StringPimped
|
@@ -44,30 +31,39 @@ end
|
|
44
31
|
|
45
32
|
module Arfy
|
46
33
|
class Generator
|
34
|
+
def generate_migration_file(migration_name, dir)
|
35
|
+
migration_path = File.join(dir, new_migration_file_name_for(migration_name))
|
36
|
+
File.open(migration_path, "w") do |file|
|
37
|
+
file << code_for_migration(migration_name)
|
38
|
+
end
|
39
|
+
return nil unless File.exists? migration_path
|
40
|
+
migration_path
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
47
45
|
def timestamp
|
48
46
|
Time.new.strftime("%Y%m%d%H%M%S")
|
49
47
|
end
|
50
48
|
|
51
|
-
def
|
52
|
-
|
53
|
-
unless
|
54
|
-
class <<
|
49
|
+
def pimp_this_string_for_method(string, method)
|
50
|
+
new_string = String.new(string)
|
51
|
+
unless new_string.respond_to? method
|
52
|
+
class << new_string
|
55
53
|
include StringPimped
|
56
54
|
end
|
57
55
|
end
|
58
|
-
|
56
|
+
new_string.send(method)
|
57
|
+
end
|
58
|
+
|
59
|
+
def code_for_migration(migration_name)
|
60
|
+
klass = pimp_this_string_for_method(migration_name, :classify)
|
59
61
|
b = binding
|
60
62
|
template.result b
|
61
63
|
end
|
62
64
|
|
63
65
|
def new_migration_file_name_for(migration_name)
|
64
|
-
migration_name =
|
65
|
-
unless migration_name.respond_to? :underscore
|
66
|
-
class << migration_name
|
67
|
-
include StringPimped
|
68
|
-
end
|
69
|
-
end
|
70
|
-
migration_name = migration_name.underscore
|
66
|
+
migration_name = pimp_this_string_for_method(migration_name, :underscore)
|
71
67
|
"#{timestamp}_#{migration_name}.rb"
|
72
68
|
end
|
73
69
|
|
@@ -88,27 +84,5 @@ module Arfy
|
|
88
84
|
ERB.new read_template_file
|
89
85
|
end
|
90
86
|
|
91
|
-
def generate_migration_file(migration_name, dir)
|
92
|
-
migration_path = File.join(dir, new_migration_file_name_for(migration_name))
|
93
|
-
File.open(migration_path, "w") do |file|
|
94
|
-
file << code_for_migration(migration_name)
|
95
|
-
end
|
96
|
-
File.exists? migration_path
|
97
|
-
end
|
98
87
|
end
|
99
88
|
end
|
100
|
-
|
101
|
-
=begin
|
102
|
-
klass = "teste"
|
103
|
-
template = ERB.new <<EOF
|
104
|
-
<%= "class #{klass} < ActiveRecord::Migration" %>
|
105
|
-
<%= " def self.up" %>
|
106
|
-
<%= " end" %>
|
107
|
-
<%= "" %>
|
108
|
-
<%= " def self.down" %>
|
109
|
-
<%= " end" %>
|
110
|
-
<%= "end" %>
|
111
|
-
EOF
|
112
|
-
|
113
|
-
puts template.result
|
114
|
-
=end
|
data/lib/arfy/rails_faker.rb
CHANGED
@@ -5,13 +5,11 @@ module RailsFaker
|
|
5
5
|
|
6
6
|
def env
|
7
7
|
if @fake_env.nil?
|
8
|
-
|
9
|
-
@fake_env = Rails.application.config.database_configuration[env_name]
|
8
|
+
@fake_env = String.new(ENV['RAILS_ENV'] ||= "development")
|
10
9
|
class << @fake_env
|
11
10
|
include EnvironmentFaker
|
12
11
|
end
|
13
12
|
end
|
14
|
-
@fake_env.env = env_name
|
15
13
|
@fake_env
|
16
14
|
end
|
17
15
|
|
data/lib/arfy/version.rb
CHANGED
data/lib/tasks/all.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
task :environment do
|
2
2
|
# requiring config/environment
|
3
|
+
ActiveRecord::Base.establish_connection(Rails.application.config.database_configuration[Rails.env])
|
3
4
|
end
|
4
5
|
|
5
6
|
desc "Changes the environment (options TARGET=development) - use your's configuration name on database.yml"
|
@@ -12,7 +13,6 @@ task :rails_env do
|
|
12
13
|
# TODO: waiting for a better way of doing this
|
13
14
|
# create a new connection on pool for ActiveRecord::Base class name
|
14
15
|
# TODO: just do it on the first time
|
15
|
-
ActiveRecord::Base.establish_connection(Rails.env)
|
16
16
|
end
|
17
17
|
|
18
18
|
namespace :generate do
|
@@ -24,10 +24,15 @@ namespace :generate do
|
|
24
24
|
outdir = ENV["OUTDIR"] || Rails.application.config.paths['db/migrate']
|
25
25
|
ENV["RAILS_ENV"] = ENV["TARGET"] || ENV["RAILS_ENV"]
|
26
26
|
|
27
|
+
puts "working on environment: #{ENV['RAILS_ENV']}" if ENV["RAILS_ENV"]
|
28
|
+
|
27
29
|
generator = Arfy::Generator.new
|
28
|
-
generator.generate_migration_file ENV["NAME"], outdir
|
29
|
-
|
30
|
-
|
30
|
+
file = generator.generate_migration_file ENV["NAME"], outdir
|
31
|
+
if file
|
32
|
+
puts "migration generated on: #{file}"
|
33
|
+
else
|
34
|
+
puts "FAIL. Migration not generated."
|
35
|
+
end
|
31
36
|
end
|
32
37
|
end
|
33
38
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arfy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-09-
|
12
|
+
date: 2011-09-21 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|
16
|
-
requirement: &
|
16
|
+
requirement: &70324994312800 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: 3.1.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70324994312800
|
25
25
|
description: ! 'Arfy is just a snippet: some rake tasks and environment configuration
|
26
26
|
to allow you use Rails migrations, without all the rails stack.'
|
27
27
|
email:
|