升级Rails 5.2.0后执行active_storage:install未生成storage.yml文件
解决Rails 5.2.0 Active Storage安装后未生成storage.yml的问题
嘿,我之前也碰到过这个问题!别着急,咱们一步步排查解决:
先确认Rails版本是否正确生效
有时候直接运行rails active_storage:install可能调用的是系统全局的旧版本Rails,而不是你bundle里安装的5.2.0。先跑一下rails --version看看输出是不是5.2.0,如果不是,改用bundle exec rails active_storage:install来执行安装命令,这样就能确保使用的是项目依赖里的Rails版本了。手动创建storage.yml文件
如果上面的方法还是没生成文件,完全可以手动创建一个。Rails 5.2的默认config/storage.yml内容如下,你直接复制过去就行:test: service: Disk root: <%= Rails.root.join("tmp/storage") %> local: service: Disk root: <%= Rails.root.join("storage") %> # Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key) # amazon: # service: S3 # access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %> # secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %> # region: us-east-1 # bucket: your_own_bucket # Remember not to checkin your GCS keyfile to a repository # google: # service: GCS # project: your_project # credentials: <%= Rails.root.join("path/to/gcs-keyfile.json") %> # bucket: your_own_bucket # Use rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key) # microsoft: # service: AzureStorage # storage_account_name: your_account_name # storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %> # container: your_container_name # mirror: # service: Mirror # primary: local # mirrors: [ amazon, google, microsoft ]创建好文件后,记得再执行一遍
rake db:migrate(或者rails db:migrate,Rails 5.2里两者通用)来完成Active Storage的数据库表创建。验证bundle是否真的升级到了Rails 5.2.0
有时候bundle update可能因为依赖冲突没完全升级成功。你可以运行bundle show rails看看显示的版本号是不是5.2.0。如果不是,得先解决依赖冲突,重新执行bundle update rails确保Rails版本正确升级。
内容的提问来源于stack exchange,提问作者tomb
相关产品推荐
相关产品推荐

