6
votes

Rails de jeu de paquets entre Gem AWS-S3 GEM et Right_AWS GEM. Comment résoudre?

Pour une nouvelle application, je souhaite utiliser PaperClip pour stocker des fichiers vers S3. J'ai déjà installé le gemme AWS-S3 pour une autre application. Cela semble causer des problèmes, car la paperclip devrait utiliser les droits de droite, mais essaie d'utiliser le gemme AWS-S3. Mais je ne veux pas retirer le gemme AWS-S3 de mon système. Y a-t-il un moyen de résoudre ce conflit? Peut-être en forçant le papier à utiliser à droite_aws? Ou en changeant la configuration?

ma configuration xxx

merci!


0 commentaires

4 Réponses :


12
votes

wow, c'était rapide. J'ai résolu le problème en utilisant simplement l'AWS-S3 GEM et modifie donc mon environnement.rb pour lire:

#config.gem 'right_aws'
config.gem "aws-s3", :version => ">= 0.6.2", :lib => "aws/s3"


0 commentaires

3
votes

J'ai aussi eu ce problème. Spécification des gemmes dans un certain ordre semble fonctionner pour certaines personnes: xxx pré>

dans mon application, j'ai également eu un plugin (backup_fu) spécifiant droit_aws code> ainsi que je J'ai dû commenter la ligne dans mon plugin aussi: p>

# backup_fu.rb
require 'yaml'
require 'active_support'
require 'mime/types'
require 'right_aws' unless defined?(RightAws)
require 'erb'

class BackupFuConfigError < StandardError; end
class S3ConnectError < StandardError; end

class BackupFu
  # etc...
end


0 commentaires

3
votes

Le problème principal ici est que AWS-S3 redéfinit une méthode appelée send_request_with_body_stream . .

La version d'AWS-S3 a 4 arguments et de droite_http_connection's 5. Selon la commande de chargement, AWS-S3 peut redéfinir la version de cette méthode de droite_http_connection de cette méthode.

J'ai cloné de droite_http_connection et a fait une solution rapide pour ce problème. J'ai envoyé une demande de retrait à droite_http_connection.

Par conséquent, vous pouvez utiliser mon représentant GIT dans votre paquet pour résoudre ce problème:

GEM 'droit_http_connection',: git => "git: //github.com/gammons/right_http_connection"


0 commentaires

4
votes

Il y a pas longtemps, Amazon a publié officiel AWS SDK pour Ruby . Cela fonctionne assez bien avec S3, soutient les instances S3 américaines, européennes et japonaises de la boîte et bien entretenue.

J'ai créé un module de stockage pour PaperClip appelé PaperClip-AWS pour fonctionner avec AWS SDK.

N'hésitez pas à l'utiliser. J'espère que cela aidera.


3 commentaires

Votre module nécessite du papier, ce qui semble essayer d'utiliser AWS-S3. Comment puis-je résoudre ça?


Cristian, excusez-moi pour une réponse si longue. PaperClip exige AWS-S3 uniquement pour le développement, pas pour l'exécution. Lorsque vous utilisez PaperClip-AWS Vous devez simplement inclure dans votre gemfile, comme s'il est affiché dans la documentation, puis regroupez. Rien de plus n'est nécessaire.


Super! Vraiment ravi, que cela vous aide.