我正在运行Ruby 2.5.1和Rails 5.2.0.我跑了rails s -e production,它给出了这个错误:
/home/roy/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activesupport-5.2.0/lib/active_support/message_encryptor.rb:206:in `rescue in_decrypt': ActiveSupport::MessageEncryptor::InvalidMessage
(ActiveSupport::MessageEncryptor::InvalidMessage)
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
编辑: 每当我尝试使用编辑凭证文件时,都会出现相同的错误
EDITOR="nano --wait" bin/rails credentials:edit
Run Code Online (Sandbox Code Playgroud)
我也意识到我还没有创建一个生产数据库,所以我尝试使用它
RAILS_ENV=production bundle exec rails db:reset
Run Code Online (Sandbox Code Playgroud)
(我知道db:reset有点多余但它应该可以尝试创建,迁移和播种服务器)
可悲的是我得到了同样的错误(InvalidMessage错误)
Unsupported rails environment for compass
rake aborted!
ActiveSupport::MessageEncryptor::InvalidMessage: ActiveSupport::MessageEncryptor::InvalidMessage
/home/roy/apps/myappname/config/environment.rb:5:in `<main>'
/home/roy/.rbenv/versions/2.5.1/bin/bundle:23:in `load'
/home/roy/.rbenv/versions/2.5.1/bin/bundle:23:in `<main>'
Caused by:
OpenSSL::Cipher::CipherError:
/home/roy/apps/myappname/config/environment.rb:5:in `<main>'
/home/roy/.rbenv/versions/2.5.1/bin/bundle:23:in `load'
/home/roy/.rbenv/versions/2.5.1/bin/bundle:23:in `<main>'
Tasks: TOP => db:create => db:load_config => environment
Run Code Online (Sandbox Code Playgroud) 所以我使用Active Storage上传附加到Collection模型的多个图像.除非我试图从集合中清除/删除单个附件,否则一切都很顺利.
问题:出于某种原因,每当我加载集合的显示页面时,我的所有图像都会被立即清除/删除.当然,每当我点击链接时我只想删除一个文件.有谁知道如何解决这个问题?
我的收藏展示视图:
<div id="gallery">
<% @collection.images.each do |image| %>
<%= image_tag(image) %>
<%= link_to 'Remove image', image.purge %>
<% end %>
</div>
Run Code Online (Sandbox Code Playgroud)
我已经阅读了http://edgeguides.rubyonrails.org/active_storage_overview.html#removing-files的文档 (参见第4段)
但遗憾的是,这并未提供有关如何专门使用purge或purge_later方法的任何信息.
编辑 目前将我的代码更改为此(仍然遗憾地无效):
<div id="gallery">
<% @collection.images.each do |image| %>
<%= image_tag(image) %>
<%= link_to 'Remove', delete_image_attachment_collections_url(image.signed_id),
method: :delete,
data: { confirm: 'Are you sure?' } %>
<% end %>
</div>
Run Code Online (Sandbox Code Playgroud)
在我的collections_controller.rb中有这个
def delete_image_attachment
@image = ActiveStorage::Blob.find_signed(params[:id])
@image.purge
redirect_to root_path
end
Run Code Online (Sandbox Code Playgroud)
我试图删除附加图像后,这给了我这个错误:
服务器日志:
Started DELETE "/collections/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBYdz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--3e75276d414b4c2040e02cf0afbc083e2337faa0/delete_image_attachment" for ::1 at 2018-03-29 19:06:55 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用此处解释的cron 作业来安排备份。
cron 作业确实运行,但遗憾的是没有执行其中的命令。
这是我的 schedule.rb 文件
every 1.minute do
command "backup perform -t my_backup"
end
Run Code Online (Sandbox Code Playgroud)
转换为这个 cron 文件:
# Begin Whenever generated tasks for: /home/roy/Backup/config/schedule.rb
* * * * * /bin/bash -l -c 'backup perform -t my_backup'
# End Whenever generated tasks for: /home/roy/Backup/config/schedule.rb
Run Code Online (Sandbox Code Playgroud)
然后 cron 作业每分钟运行一次(我可以通过运行看到grep CRON /var/log/syslog)。这些是我最后的 cron 工作:
Mar 20 21:48:01 roybuntu CRON[18041]: (roy) CMD (/bin/bash -l -c 'backup perform -t my_backup')
Mar 20 21:48:01 roybuntu CRON[18040]: (roy) MAIL (mailed 37 bytes …Run Code Online (Sandbox Code Playgroud) 假设我有这个数组
array = ['a', 'b', 'c', 'd']
Run Code Online (Sandbox Code Playgroud)
什么是定位元素的好方法(例如'b')并使用行中的下一个元素(在本例中为'c')切换它,结果变为:
=> ['a', 'c', 'b', 'd']
Run Code Online (Sandbox Code Playgroud)