refile-postgres 1.2.1 → 1.3.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3750ff6ae5e70ecd23b619f28d6a3c9a12150d09
4
- data.tar.gz: ccaf3d9739e3b80e7c4ebbf76de3b124c33064ae
3
+ metadata.gz: b8bef59aba0412348cf839d73d050fe0884d0a76
4
+ data.tar.gz: 67e92c6a6f7ff603458ffa802c45af72468f2c4a
5
5
  SHA512:
6
- metadata.gz: 2983f0299c9d796c8ba4a1b1831612b4bf2633ee410c7897aa4ad3da5b4f9b6acb1276fc576b8e7dd819504ab4b383fe00de5264b90b5df7339cf0398f0fc173
7
- data.tar.gz: 16d74a9439671ae6ffd5a3970dad6b987619d56c8941bd8586673344d6ef44c33410cef0415aa5754b53014cf24d8d9b66f28dc59deb0be93589a2f20dae1e21
6
+ metadata.gz: fb11435d032ab11d7b3f7fe05ca49b2d9d50b3bce200d08d6d8b706b3b4d4c47f647c43483b10c3806424e8b62c051ed2d18c9b6ef8216d6c7fd8c4c56e683d1
7
+ data.tar.gz: ffce481c8f6aafd7c3a8665c496cab13d598b123ba662e06fd1b1bc169a999be377f3e32084ec970833cccbd864807fc73c889110ad2b715dc992a64893811f2
data/Dockerfile ADDED
@@ -0,0 +1,16 @@
1
+ FROM ruby:2.3.0
2
+
3
+ RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main" >> /etc/apt/sources.list.d/pgdg.list \
4
+ && wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - \
5
+ && apt-get update -qq \
6
+ && apt-get install -y build-essential libpq-dev postgresql-client-9.5 postgresql-contrib-9.5
7
+
8
+
9
+ ENV APP_PATH=/app BUNDLE_JOBS=4 BUNDLE_RETRY=3 BUNDLE_PATH=/gems
10
+
11
+ RUN mkdir ${APP_PATH}
12
+ WORKDIR ${APP_PATH}
13
+
14
+ ADD . ${APP_PATH}
15
+
16
+ CMD bundle check || bundle install; bundle exec rspec spec
data/README.md CHANGED
@@ -36,6 +36,13 @@ Or install it yourself as:
36
36
 
37
37
  ## Usage with Rails
38
38
 
39
+ Application must have sql as schema format to properly dump OID type.
40
+
41
+ ```ruby
42
+ # config/application.rb
43
+ config.active_record.schema_format = :sql
44
+ ```
45
+
39
46
  Generate migration for table were to store list of attachments.
40
47
 
41
48
  $ rails g refile:postgres:migration
@@ -48,6 +55,11 @@ Generate initializer and set Refile::Postgres as `store` backend.
48
55
 
49
56
  $ rails g refile:postgres:initializer
50
57
 
58
+ ## Upgrade to 1.3.0
59
+
60
+ If you have been using refile-postgres before 1.3.0 version then please follow [upgrade guide](https://github.com/krists/refile-postgres/blob/master/migration_to_1_3_0.md)
61
+
62
+
51
63
  ## Contributing
52
64
 
53
65
  1. Fork it ( https://github.com/krists/refile-postgres/fork )
@@ -0,0 +1,22 @@
1
+ app:
2
+ build: .
3
+ links:
4
+ - postgres
5
+ volumes_from:
6
+ - gems
7
+ environment:
8
+ POSTGRES_HOST: postgres
9
+ POSTGRES_PORT: 5432
10
+ POSTGRES_DB: refile_test
11
+ POSTGRES_USER: refile_postgres_test_user
12
+ POSTGRES_PASSWORD: refilepostgres
13
+ postgres:
14
+ environment:
15
+ POSTGRES_USER: refile_postgres_test_user
16
+ POSTGRES_PASSWORD: refilepostgres
17
+ POSTGRES_DB: refile_test
18
+ image: postgres:9.5.1
19
+ gems:
20
+ image: busybox
21
+ volumes:
22
+ - /gems
@@ -1,13 +1,33 @@
1
1
  class Create<%= table_name.camelize %> < ActiveRecord::Migration
2
2
  def up
3
- create_table :<%= table_name %> do |t|
4
- t.string :namespace, null: false
5
- end
6
- add_index :<%= table_name %>, :namespace
3
+ execute %Q{
4
+ CREATE TABLE <%= table_name %> (
5
+ id integer NOT NULL,
6
+ oid oid NOT NULL,
7
+ namespace character varying NOT NULL,
8
+ created_at timestamp without time zone DEFAULT ('now'::text)::timestamp without time zone
9
+ );
10
+
11
+ CREATE SEQUENCE <%= table_name %>_id_seq
12
+ START WITH 1
13
+ INCREMENT BY 1
14
+ NO MINVALUE
15
+ NO MAXVALUE
16
+ CACHE 1;
17
+
18
+ ALTER SEQUENCE <%= table_name %>_id_seq OWNED BY <%= table_name %>.id;
19
+
20
+ ALTER TABLE ONLY <%= table_name %> ALTER COLUMN id SET DEFAULT nextval('<%= table_name %>_id_seq'::regclass);
21
+
22
+ ALTER TABLE ONLY <%= table_name %> ADD CONSTRAINT <%= table_name %>_pkey PRIMARY KEY (id);
23
+
24
+ CREATE INDEX index_<%= table_name %>_on_namespace ON <%= table_name %> USING btree (namespace);
25
+
26
+ CREATE INDEX index_<%= table_name %>_on_oid ON <%= table_name %> USING btree (oid);
27
+ }
7
28
  end
8
29
 
9
30
  def drop
10
- remove_index :<%= table_name %>, :namespace
11
31
  drop_table :<%= table_name %>
12
32
  end
13
33
  end
@@ -46,7 +46,7 @@ module Refile
46
46
  connection.lo_write(handle, buffer)
47
47
  end
48
48
  uploadable.close
49
- connection.exec_params("INSERT INTO #{registry_table} VALUES ($1::integer, $2::varchar);", [oid, namespace])
49
+ connection.exec_params("INSERT INTO #{registry_table} (oid, namespace) VALUES ($1::oid, $2::varchar);", [oid, namespace])
50
50
  Refile::File.new(self, oid.to_s)
51
51
  ensure
52
52
  connection.lo_close(handle)
@@ -80,9 +80,9 @@ module Refile
80
80
  connection.exec_params(%{
81
81
  SELECT count(*) FROM #{registry_table}
82
82
  INNER JOIN #{PG_LARGE_OBJECT_METADATA_TABLE}
83
- ON #{registry_table}.id = #{PG_LARGE_OBJECT_METADATA_TABLE}.oid
83
+ ON #{registry_table}.oid = #{PG_LARGE_OBJECT_METADATA_TABLE}.oid
84
84
  WHERE #{registry_table}.namespace = $1::varchar
85
- AND #{registry_table}.id = $2::integer;
85
+ AND #{registry_table}.oid = $2::integer;
86
86
  }, [namespace, id.to_s.to_i]) do |result|
87
87
  result[0]["count"].to_i > 0
88
88
  end
@@ -101,8 +101,14 @@ module Refile
101
101
  if exists?(id)
102
102
  with_connection do |connection|
103
103
  ensure_in_transaction(connection) do
104
- connection.lo_unlink(id.to_s.to_i)
105
- connection.exec_params("DELETE FROM #{registry_table} WHERE id = $1::integer;", [id])
104
+ rez = connection.exec_params(%{
105
+ SELECT * FROM #{registry_table}
106
+ WHERE #{registry_table}.oid = $1::integer
107
+ LIMIT 1
108
+ }, [id.to_s.to_i])
109
+ oid = rez[0]['oid'].to_i
110
+ connection.lo_unlink(oid)
111
+ connection.exec_params("DELETE FROM #{registry_table} WHERE oid = $1::integer;", [oid])
106
112
  end
107
113
  end
108
114
  end
@@ -114,12 +120,12 @@ module Refile
114
120
  with_connection do |connection|
115
121
  ensure_in_transaction(connection) do
116
122
  connection.exec_params(%{
117
- SELECT * FROM #{registry_table}
118
- INNER JOIN #{PG_LARGE_OBJECT_METADATA_TABLE} ON #{registry_table}.id = #{PG_LARGE_OBJECT_METADATA_TABLE}.oid
123
+ SELECT #{registry_table}.oid FROM #{registry_table}
124
+ INNER JOIN #{PG_LARGE_OBJECT_METADATA_TABLE} ON #{registry_table}.oid = #{PG_LARGE_OBJECT_METADATA_TABLE}.oid
119
125
  WHERE #{registry_table}.namespace = $1::varchar;
120
126
  }, [namespace]) do |result|
121
127
  result.each_row do |row|
122
- connection.lo_unlink(row[0].to_s.to_i)
128
+ connection.lo_unlink(row[0].to_i)
123
129
  end
124
130
  end
125
131
  connection.exec_params("DELETE FROM #{registry_table} WHERE namespace = $1::varchar;", [namespace])
@@ -1,5 +1,5 @@
1
1
  module Refile
2
2
  module Postgres
3
- VERSION = "1.2.1"
3
+ VERSION = "1.3.0"
4
4
  end
5
5
  end
@@ -0,0 +1,47 @@
1
+ # Migration to refile-postgres version 1.3.0
2
+
3
+ Please check [issue](https://github.com/krists/refile-postgres/issues/9) for more details.
4
+
5
+ 1) Change Rails schema dump format to SQL in your `config/application.rb` file
6
+ ```ruby
7
+ # Use structure.sql instead of schema.rb
8
+ config.active_record.schema_format = :sql
9
+ ```
10
+ 2) Change version number in Gemfile
11
+ ```ruby
12
+ gem 'refile-postgres', '~> 1.3.0'
13
+ ```
14
+ 3) Create Rails migration
15
+ ```
16
+ rails g migration refile_postgres_migration_to_1_3_0
17
+ ```
18
+ 4) Add content to migration
19
+ ```ruby
20
+ class RefilePostgresMigrationTo130 < ActiveRecord::Migration
21
+ def up
22
+ execute <<-SQL
23
+ DROP INDEX index_refile_attachments_on_namespace;
24
+ ALTER TABLE refile_attachments RENAME TO old_refile_attachments;
25
+ ALTER TABLE ONLY old_refile_attachments RENAME CONSTRAINT refile_attachments_pkey TO old_refile_attachments_pkey;
26
+ CREATE TABLE refile_attachments (
27
+ id integer NOT NULL,
28
+ oid oid NOT NULL,
29
+ namespace character varying NOT NULL,
30
+ created_at timestamp without time zone DEFAULT ('now'::text)::timestamp without time zone
31
+ );
32
+ ALTER TABLE ONLY refile_attachments ADD CONSTRAINT refile_attachments_pkey PRIMARY KEY (id);
33
+ ALTER SEQUENCE refile_attachments_id_seq RESTART OWNED BY refile_attachments.id;
34
+ ALTER TABLE ONLY refile_attachments ALTER COLUMN id SET DEFAULT nextval('refile_attachments_id_seq'::regclass);
35
+ INSERT INTO refile_attachments (oid, namespace) SELECT id, namespace FROM old_refile_attachments;
36
+ CREATE INDEX index_refile_attachments_on_namespace ON refile_attachments USING btree (namespace);
37
+ CREATE INDEX index_refile_attachments_on_oid ON refile_attachments USING btree (oid);
38
+ DROP TABLE old_refile_attachments;
39
+ SQL
40
+ end
41
+
42
+ def down
43
+ raise ActiveRecord::IrreversibleMigration
44
+ end
45
+ end
46
+ ```
47
+ 5) Now it is safe to run [vacuumlo](http://www.postgresql.org/docs/9.5/static/vacuumlo.html)
@@ -8,7 +8,7 @@ describe Refile::Postgres::Backend do
8
8
  context "when not using procs and providing PG::Connection directly" do
9
9
  let(:connection_or_proc) { connection }
10
10
  it "reuses the same PG::Connection" do
11
- expect(backend.with_connection { |c| c.db }).to eq("refile_test")
11
+ expect(backend.with_connection { |c| c.db }).to eq(TEST_DB_NAME)
12
12
  end
13
13
  end
14
14
 
@@ -25,7 +25,7 @@ describe Refile::Postgres::Backend do
25
25
  context "when lambda does yield a PG::Connection" do
26
26
  let(:connection_or_proc) { lambda { |&blk| blk.call(connection) } }
27
27
  it "is usable in queries" do
28
- expect(backend.with_connection { |c| c.db }).to eq("refile_test")
28
+ expect(backend.with_connection { |c| c.db }).to eq(TEST_DB_NAME)
29
29
  end
30
30
  end
31
31
  end
@@ -64,6 +64,18 @@ describe Refile::Postgres::Backend do
64
64
  end
65
65
  end
66
66
 
67
+ describe "Orphaned large object cleaning" do
68
+ let(:connection_or_proc) { test_connection }
69
+ let(:backend) { Refile::Postgres::Backend.new(connection_or_proc, max_size: 10000 ) }
70
+ it "does not garbage collect attachments after vacuumlo call" do
71
+ uploadable = File.open(File.expand_path(__FILE__))
72
+ file = backend.upload(uploadable)
73
+ expect(backend.exists?(file.id)).to eq(true)
74
+ run_vacuumlo
75
+ expect(backend.exists?(file.id)).to eq(true)
76
+ end
77
+ end
78
+
67
79
  context "Refile Provided tests" do
68
80
  let(:connection_or_proc) { connection }
69
81
  it_behaves_like :backend
data/spec/spec_helper.rb CHANGED
@@ -8,30 +8,59 @@ require "refile/spec_helper"
8
8
  require "pg"
9
9
  require "pry"
10
10
  require "refile/postgres"
11
+ require "open3"
11
12
 
12
13
  WebMock.disable!(:except => [:codeclimate_test_reporter])
13
14
 
15
+ TEST_DB_NAME = ENV.fetch('POSTGRES_DB', 'refile_test')
16
+ TEST_DB_HOST = ENV.fetch('POSTGRES_HOST','localhost')
17
+ TEST_DB_USER = ENV.fetch('POSTGRES_USER','refile_postgres_test_user')
18
+ TEST_DB_PASSWD = ENV.fetch('POSTGRES_PASSWORD','refilepostgres')
14
19
  module DatabaseHelpers
15
20
  def test_connection
16
- @@connection ||= PG.connect(host: 'localhost', dbname: 'refile_test', user: 'refile_postgres_test_user', password: 'refilepostgres')
21
+ @@connection ||= PG.connect(host: TEST_DB_HOST, dbname: TEST_DB_NAME, user: TEST_DB_USER, password: TEST_DB_PASSWD)
17
22
  end
18
23
 
19
- def create_registy_table
20
- test_connection.exec %{
21
- CREATE TABLE IF NOT EXISTS #{Refile::Postgres::Backend::DEFAULT_REGISTRY_TABLE}
22
- (
23
- id serial NOT NULL,
24
- namespace character varying(255),
25
- CONSTRAINT refile_backend_lo_oids_pkey PRIMARY KEY (id)
26
- )
27
- WITH(
28
- OIDS=FALSE
24
+ def create_registy_table(name = Refile::Postgres::Backend::DEFAULT_REGISTRY_TABLE)
25
+ test_connection.exec %Q{
26
+ DROP TABLE IF EXISTS #{name};
27
+ CREATE TABLE #{name} (
28
+ id integer NOT NULL,
29
+ oid oid NOT NULL,
30
+ namespace character varying NOT NULL,
31
+ created_at timestamp without time zone DEFAULT ('now'::text)::timestamp without time zone
29
32
  );
33
+
34
+ CREATE SEQUENCE #{name}_id_seq
35
+ START WITH 1
36
+ INCREMENT BY 1
37
+ NO MINVALUE
38
+ NO MAXVALUE
39
+ CACHE 1;
40
+
41
+ ALTER SEQUENCE #{name}_id_seq OWNED BY #{name}.id;
42
+
43
+ ALTER TABLE ONLY #{name} ALTER COLUMN id SET DEFAULT nextval('#{name}_id_seq'::regclass);
44
+
45
+ ALTER TABLE ONLY #{name} ADD CONSTRAINT #{name}_pkey PRIMARY KEY (id);
46
+
47
+ CREATE INDEX index_#{name}_on_namespace ON #{name} USING btree (namespace);
48
+
49
+ CREATE INDEX index_#{name}_on_oid ON #{name} USING btree (oid);
30
50
  }
31
51
  end
32
52
 
33
- def drop_registry_table
34
- test_connection.exec %{ DROP TABLE IF EXISTS #{Refile::Postgres::Backend::DEFAULT_REGISTRY_TABLE} CASCADE; }
53
+ def drop_registry_table(name = Refile::Postgres::Backend::DEFAULT_REGISTRY_TABLE)
54
+ test_connection.exec %{ DROP TABLE IF EXISTS #{name} CASCADE; }
55
+ end
56
+
57
+ def run_vacuumlo
58
+ command = "export PGPASSWORD=#{TEST_DB_PASSWD}; vacuumlo -h #{TEST_DB_HOST} -U #{TEST_DB_USER} -w -v #{TEST_DB_NAME}"
59
+ Open3.popen3(command) do |stdin, stdout, stderr, thread|
60
+ stdin.close
61
+ IO.copy_stream(stderr, $stderr)
62
+ IO.copy_stream(stdout, $stdout)
63
+ end
35
64
  end
36
65
  end
37
66
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: refile-postgres
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Krists Ozols
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-16 00:00:00.000000000 Z
11
+ date: 2016-04-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: refile
@@ -160,20 +160,12 @@ extra_rdoc_files: []
160
160
  files:
161
161
  - ".gitignore"
162
162
  - ".travis.yml"
163
- - Berksfile
164
- - Berksfile.lock
163
+ - Dockerfile
165
164
  - Gemfile
166
165
  - LICENSE.txt
167
166
  - README.md
168
167
  - Rakefile
169
- - Vagrantfile
170
- - cookbooks/dev-essential/metadata.rb
171
- - cookbooks/dev-essential/recipes/default.rb
172
- - cookbooks/postgresql/metadata.rb
173
- - cookbooks/postgresql/recipes/default.rb
174
- - cookbooks/ruby/attributes/default.rb
175
- - cookbooks/ruby/metadata.rb
176
- - cookbooks/ruby/recipes/default.rb
168
+ - docker-compose.yml
177
169
  - lib/generators/refile/postgres/initializer/USAGE
178
170
  - lib/generators/refile/postgres/initializer/initializer_generator.rb
179
171
  - lib/generators/refile/postgres/initializer/templates/refile.rb
@@ -185,6 +177,7 @@ files:
185
177
  - lib/refile/postgres/backend/reader.rb
186
178
  - lib/refile/postgres/smart_transaction.rb
187
179
  - lib/refile/postgres/version.rb
180
+ - migration_to_1_3_0.md
188
181
  - postgres-setup
189
182
  - refile-postgres.gemspec
190
183
  - spec/refile/postgres/backend_spec.rb
data/Berksfile DELETED
@@ -1,4 +0,0 @@
1
- source "https://supermarket.chef.io"
2
-
3
- cookbook 'apt', '~> 2.7.0'
4
- cookbook 'locale', '~> 1.0.2'
data/Berksfile.lock DELETED
@@ -1,7 +0,0 @@
1
- DEPENDENCIES
2
- apt (~> 2.7.0)
3
- locale (~> 1.0.2)
4
-
5
- GRAPH
6
- apt (2.7.0)
7
- locale (1.0.2)
data/Vagrantfile DELETED
@@ -1,24 +0,0 @@
1
- # -*- mode: ruby -*-
2
- # vi: set ft=ruby :
3
-
4
- Vagrant.configure(2) do |config|
5
- config.vm.box = "chef/ubuntu-14.04"
6
-
7
- config.ssh.forward_agent = true
8
- config.vm.synced_folder ".", "/home/vagrant/project"
9
-
10
- config.vm.provider "virtualbox" do |vb|
11
- vb.memory = "2048"
12
- vb.cpus = 2
13
- end
14
-
15
- config.berkshelf.enabled = false
16
-
17
- config.vm.provision "chef_solo" do |chef|
18
- chef.cookbooks_path = ["cookbooks", "berks-cookbooks"]
19
- chef.log_level = :info
20
- chef.add_recipe "dev-essential"
21
- chef.add_recipe "ruby"
22
- chef.add_recipe "postgresql"
23
- end
24
- end
@@ -1,8 +0,0 @@
1
- name 'dev-essential'
2
- maintainer 'Krists Ozols'
3
- maintainer_email 'krists.ozols@gmail.com'
4
- license 'MIT'
5
- description 'Installs/Configures some essentials for development'
6
- version '0.1.0'
7
-
8
- depends 'locale', '~> 1.0.2'
@@ -1,9 +0,0 @@
1
- include_recipe "locale"
2
-
3
- %w{
4
- git-core curl vim tmux
5
- }.each do |p|
6
- package p do
7
- action :install
8
- end
9
- end
@@ -1,8 +0,0 @@
1
- name 'postgresql'
2
- maintainer 'Krists Ozols'
3
- maintainer_email 'krists.ozols@gmail.com'
4
- license 'MIT'
5
- description 'Installs/Configures PostgreSQL 9.4'
6
- version '0.1.0'
7
-
8
- depends 'apt', '~> 2.7.0'
@@ -1,29 +0,0 @@
1
- apt_repository 'postgresql' do
2
- uri 'http://apt.postgresql.org/pub/repos/apt/'
3
- distribution 'trusty-pgdg'
4
- components ['main']
5
- key 'https://www.postgresql.org/media/keys/ACCC4CF8.asc'
6
- action :add
7
- end
8
-
9
- %w{
10
- postgresql-9.4
11
- postgresql-client-9.4
12
- postgresql-contrib-9.4
13
- postgresql-server-dev-9.4
14
- }.each do |p|
15
- package p do
16
- action :install
17
- end
18
- end
19
-
20
- execute 'Create vagrant postgresql user' do
21
- guard = <<-EOH
22
- psql -U postgres -c "select * from pg_user where
23
- usename='vagrant'" |
24
- grep -c vagrant
25
- EOH
26
- user 'postgres'
27
- command %{psql -U postgres -c "CREATE ROLE vagrant PASSWORD 'vagrant' SUPERUSER CREATEDB LOGIN;"}
28
- not_if guard, user: 'postgres'
29
- end
@@ -1,2 +0,0 @@
1
- default[:ruby_install][:version] = '0.5.0'
2
- default[:chruby][:version] = '0.3.9'
@@ -1,6 +0,0 @@
1
- name 'ruby'
2
- maintainer 'Krists Ozols'
3
- maintainer_email 'krists.ozols@gmail.com'
4
- license 'MIT'
5
- description 'Installs/Configures ruby-installer and chruby'
6
- version '0.1.0'
@@ -1,52 +0,0 @@
1
-
2
- remote_file "/tmp/ruby-install-#{node[:ruby_install][:version]}.tar.gz" do
3
- source "https://github.com/postmodern/ruby-install/archive/v#{node[:ruby_install][:version]}.tar.gz"
4
- action :create
5
- end
6
-
7
- bash "Extract ruby-install source code" do
8
- code <<-EOH
9
- cd /tmp
10
- tar -zxvf ruby-install-#{node[:ruby_install][:version]}.tar.gz
11
- EOH
12
- not_if { ::File.exists?("/tmp/ruby-install-#{node[:ruby_install][:version]}") }
13
- end
14
-
15
- execute 'Install ruby-install' do
16
- cwd "/tmp/ruby-install-#{node[:ruby_install][:version]}"
17
- command 'make install'
18
- action :run
19
- not_if { ::File.exists?("/usr/local/bin/ruby-install") }
20
- end
21
-
22
- remote_file "/tmp/chruby-#{node[:chruby][:version]}.tar.gz" do
23
- source "https://github.com/postmodern/chruby/archive/v#{node[:chruby][:version]}.tar.gz"
24
- action :create
25
- end
26
-
27
- bash "Extract chruby source code" do
28
- code <<-EOH
29
- cd /tmp
30
- tar -zxvf chruby-#{node[:chruby][:version]}.tar.gz
31
- EOH
32
- not_if { ::File.exists?("/tmp/chruby-#{node[:chruby][:version]}") }
33
- end
34
-
35
- execute 'Install chruby' do
36
- cwd "/tmp/chruby-#{node[:chruby][:version]}"
37
- command 'make install'
38
- action :run
39
- not_if { ::File.exists?("/usr/local/bin/chruby") }
40
- end
41
-
42
- file "/etc/profile.d/chruby.sh" do
43
- owner 'root'
44
- group 'root'
45
- mode '0644'
46
- content <<-EOC
47
- if [ -n "$BASH_VERSION" ] || [ -n "$ZSH_VERSION" ]; then
48
- source /usr/local/share/chruby/chruby.sh
49
- source /usr/local/share/chruby/auto.sh
50
- fi
51
- EOC
52
- end