1

Я пытаюсь настроить Fake-S3 с помощью Paperclip после this gist. На машине развития все работает нормально, но когда я пытаюсь запустить его на CircleCI я получаю ошибкуRails Fake-S3 on CircleCI Connection отказано

Errno::ECONNREFUSED: Connection refused - connect(2) for "local-bucket.local.s3.endpoint" port 4567 

У меня есть следующий конфиг/сред/test.rb:

config.paperclip_defaults = { 
    storage: :s3, 
    s3_credentials: { 
    access_key_id: 'anything', 
    secret_access_key: 'anything' 
    }, 
    bucket: 'local-bucket', 
    s3_host_name: 'local.s3.endpoint', 
    s3_protocol: 'http', 
    url: ':s3_alias_url', 
    s3_host_alias: 'local-bucket.local.s3.endpoint:4567', 
    path: '/test/:class/:attachment/:id_partition/:style/:filename', 
    s3_options: { 
    use_ssl: false, 
    s3_port: 4567 
    } 
} 

На CircleCI Я добавляю эту строку в/и т.д./хосты:

127.0.0.1 local-bucket.local.s3.endpoint 

И работает следующая команда:

fakes3 -r ./fakes3 -p 4567 >log/fakes3.log 2>&1 & 

Так что, когда я пытаюсь создать новое ведерко со следующим кодом:

s3 = AWS::S3.new(
    access_key_id:  'anything', 
    secret_access_key: 'anything', 
    s3_endpoint:  'local.s3.endpoint', 
    s3_port:   4567, 
    use_ssl:   false 
) 
s3.buckets.create('local-bucket') 

я получаю следующую ошибку:

rake aborted! 
Errno::ECONNREFUSED: Connection refused - connect(2) for "local-bucket.local.s3.endpoint" port 4567 
/home/ubuntu/***/vendor/bundle/ruby/2.2.0/gems/aws-sdk-v1-1.64.0/lib/aws/core/http/connection_pool.rb:327:in `start_session' 
/home/ubuntu/***/vendor/bundle/ruby/2.2.0/gems/aws-sdk-v1-1.64.0/lib/aws/core/http/connection_pool.rb:127:in `session_for' 
/home/ubuntu/***/vendor/bundle/ruby/2.2.0/gems/aws-sdk-v1-1.64.0/lib/aws/core/http/net_http_handler.rb:56:in `handle' 
/home/ubuntu/***/vendor/bundle/ruby/2.2.0/gems/aws-sdk-v1-1.64.0/lib/aws/core/client.rb:253:in `block in make_sync_request' 
/home/ubuntu/***/vendor/bundle/ruby/2.2.0/gems/aws-sdk-v1-1.64.0/lib/aws/core/client.rb:282:in `retry_server_errors' 
/home/ubuntu/***/vendor/bundle/ruby/2.2.0/gems/aws-sdk-v1-1.64.0/lib/aws/s3/region_detection.rb:11:in `retry_server_errors' 
/home/ubuntu/***/vendor/bundle/ruby/2.2.0/gems/aws-sdk-v1-1.64.0/lib/aws/core/client.rb:249:in `make_sync_request' 
/home/ubuntu/***/vendor/bundle/ruby/2.2.0/gems/aws-sdk-v1-1.64.0/lib/aws/core/client.rb:511:in `block (2 levels) in client_request' 
/home/ubuntu/***/vendor/bundle/ruby/2.2.0/gems/aws-sdk-v1-1.64.0/lib/aws/core/client.rb:391:in `log_client_request' 
/home/ubuntu/***/vendor/bundle/ruby/2.2.0/gems/aws-sdk-v1-1.64.0/lib/aws/core/client.rb:477:in `block in client_request' 
/home/ubuntu/***/vendor/bundle/ruby/2.2.0/gems/aws-sdk-v1-1.64.0/lib/aws/core/client.rb:373:in `return_or_raise' 
/home/ubuntu/***/vendor/bundle/ruby/2.2.0/gems/aws-sdk-v1-1.64.0/lib/aws/core/client.rb:476:in `client_request' 
(eval):3:in `create_bucket' 
/home/ubuntu/***/vendor/bundle/ruby/2.2.0/gems/aws-sdk-v1-1.64.0/lib/aws/s3/bucket_collection.rb:109:in `create' 
/home/ubuntu/***/lib/tasks/fakes3.rake:11:in `block (2 levels) in <top (required)>' 
Tasks: TOP => fakes3:create_bucket 
(See full trace by running task with --trace) 

Пожалуйста, помогите мне, чтобы выяснить, что случилось?

ОБНОВЛЕНО (1):

Я понял, что если я подключить к CircleCI построить через SSH и запустить

fakes3 -r ./fakes3 -p 4567 >log/fakes3.log 2>&1 & 

с рельсов приложение папки все работает, как нужно, и все тесты проходит.

ОБНОВЛЕНО (2):

Кусок circle.yml файла:

test: 
    pre: 
    - bundle exec fakes3 -r ./fakes3 -p 4567 >./log/fakes3.log 2>&1 & 
    - bundle exec rake fakes3:create_bucket 

ответ

1

Через пару дней в поисках решения я нашел его. Проблема заключалась в управлении FakeS3 в фоновом режиме, используя & знак

fakes3 -r ./fakes3 -p 4567 >log/fakes3.log 2>&1 & 

Этот this docs из CircleCI:

Starting a background process from circle.yml is entirely possible, but it is not done by adding & to the end of your command line. Instead, you set the background flag on the command.

Итак, я переписал FakeS3 запуск следующим образом:

test: 
    pre: 
    - bundle exec fakes3 -r ./fakes3 -p 4567 >./log/fakes3.log 2>&1: 
     background: true 
    - bundle exec rake fakes3:create_bucket 

и получил результат.

Смежные вопросы