问题描述
我创建了一家商店。
我在 Cloudinary 上托管图像。我可以在本地和生产中加载图像,但我在 cloudinary 上找不到它们。
我关注: https://github.com/cloudinary/cloudinary_gem https://github.com/0sc/activestorage-cloudinary-service
宝石文件:
<p-table [value]="products" selectionMode="single" [(selection)]="selectedProduct1" dataKey="code">
<ng-template pTemplate="header">
<tr>
<th>Code</th>
<th>Name</th>
<th>Category</th>
<th>Quantity</th>
</tr>
</ng-template>
<ng-template pTemplate="body" let-product>
<tr [pSelectableRow]="product">
<td>{{product.code}}</td>
<td>{{product.name}}</td>
<td>{{product.category}}</td>
<td>{{product.quantity}}</td>
</tr>
</ng-template>
</p-table>
config/storage.yml
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
ruby '2.6.6'
gem 'rails','~> 6.0.3','>= 6.0.3.5'
gem 'pg','>= 0.18','< 2.0'
gem 'puma','~> 4.1'
gem 'sass-rails','>= 6'
gem 'webpacker','~> 4.0'
gem 'turbolinks','~> 5'
gem 'jbuilder','~> 2.7'
# Use Active Storage variant
# gem 'image_processing','~> 1.2'
gem 'bootsnap','>= 1.4.2',require: false
gem 'solidus'
gem 'solidus_auth_devise'
gem 'cloudinary'
gem 'activestorage-cloudinary-service'
group :development,:test do
gem 'byebug',platforms: [:mri,:mingw,:x64_mingw]
gem 'dotenv-rails'
end
group :development do
# Access an interactive console on exception pages or by calling 'console' anywhere in the code.
gem 'web-console','>= 3.3.0'
gem 'listen','~> 3.2'
gem 'spring'
gem 'spring-watcher-listen','~> 2.0.0'
end
group :test do
gem 'capybara','>= 2.15'
gem 'selenium-webdriver'
gem 'webdrivers'
end
# Windows does not include zoneinfo files,so bundle the tzinfo-data gem
gem 'tzinfo-data',platforms: [:mingw,:mswin,:x64_mingw,:jruby]
config/environments/production.rb
cloudinary:
service: Cloudinary
cloud_name: <%= ENV['CLOUDINARY_CLOUD_NAME'] %>
api_key: <%= ENV['CLOUDINARY_API_KEY'] %>
api_secret: <%= ENV['CLOUDINARY_API_SECRET'] %>
spree.rb:注释关于回形针的行
config.active_storage.service = :cloudinary
storage.yml
# Enable Paperclip adapter for attachments on images and taxons
# config.image_attachment_module = 'Spree::Image::PaperclipAttachment'
# config.taxon_attachment_module = 'Spree::Taxon::PaperclipAttachment'
我尝试在本地进行测试,法师出现在应用程序上,但不在托管系统上。
config/environments/development.rb
test:
service: disk
root: <%= Rails.root.join("tmp/storage") %>
local:
service: disk
root: <%= Rails.root.join("storage") %>
cloudinary:
service: Cloudinary
config/cloudinary.yml
config.active_storage.service = :cloudinary
感谢您的帮助
解决方法
请您提交一张表明您的云名称的票证,以便我为您调查? 最好, 莫
,我找到了解决方案
将 cloudinary 与 active_record 集成
宝石文件
gem 'rails','~> 6.1'
# Use Active Storage variant
gem 'image_processing','~> 1.2'
gem 'cloudinary'
gem 'activestorage-cloudinary-service'
然后
bundle install
Active_record 需要 rails >6.1
bundle update rails
cloudinary.yml 或在您的服务器上设置环境变量
development:
cloud_name: xxx
api_key: 'xxx'
api_secret: xxx
enhance_image_tag: true
static_file_support: false
production:
cloud_name: xxx
api_key: 'xxx'
api_secret: xxx
enhance_image_tag: true
static_file_support: true
test:
cloud_name: xxx
api_key: 'xxx'
api_secret: xxx
enhance_image_tag: true
static_file_support: false
spree.rb
# Enable Paperclip adapter for attachments on images and taxons
config.image_attachment_module = 'Spree::Image::ActiveStorageAttachment'
config.taxon_attachment_module = 'Spree::Taxon::ActiveStorageAttachment'
storage.yml
....
cloudinary:
service: Cloudinary
config/environnements/production.rb
config.active_storage.service = :cloudinary
如果它引发错误。
ActiveModel::UnknownAttributeError (unknown attribute 'service_name' for ActiveStorage::Blob.):
rails active_storage:update
rails db:migrate
数据库需要清空产品,否则会引发错误
https://github.com/solidusio/solidus/discussions/3930#discussioncomment-361391