运行 rails dev:cache 带参数
Run rails dev:cache with an argument
Rails 命令 rails dev:cache
切换 Rails 缓存功能是否在本地开发环境中工作。它通过创建或销毁充当功能标志的文件来实现此目的。但是,对于我们的开发设置脚本,我想 运行 命令以便缓存功能始终打开而不是切换。
rails dev:cache
的源代码包括此 enable_by_argument
function:
def enable_by_argument(caching)
FileUtils.mkdir_p("tmp")
if caching
create_cache_file
elsif caching == false && File.exist?(FILE)
delete_cache_file
end
end
我如何 运行 rails dev:cache
命令以便它使用此参数? 我尝试了几种变体,包括 rails dev:cache[true]
, rails dev:cache\[true\]
和 rails dev:cache true
, 但它们都使用了切换行为而不是参数控制行为。
这不是 How to pass command line arguments to a rake task 的重复问题,因为该问题是关于将参数传递给 Rake 任务的。但这是内置于 Rails 中的命令。
默认情况下不可能这样做,因为the original task根本不接受参数。
但是,如果我们稍微改进任务代码,我们可以让它执行您想要的操作。
将其放在 Rakefile
:
的末尾
# Remove original task
Rake::Task["dev:cache"].clear
# Reimplement task with new and improved behavior
namespace :dev do
desc "Toggle development mode caching on/off"
task :cache, [:enable] do |task, args|
enable = ActiveModel::Type::Boolean.new.cast(args[:enable])
if enable.nil?
# Old behavior: toggle
Rails::DevCaching.enable_by_file
else
# New behavior: by argument
Rails::DevCaching.enable_by_argument(enable)
puts "Development mode is #{enable ? 'now' : 'no longer'} being cached."
end
end
end
现在您可以使用其中任何一个:
rails dev:cache
rails dev:cache[true]
rails dev:cache[false]
Rails 命令 rails dev:cache
切换 Rails 缓存功能是否在本地开发环境中工作。它通过创建或销毁充当功能标志的文件来实现此目的。但是,对于我们的开发设置脚本,我想 运行 命令以便缓存功能始终打开而不是切换。
rails dev:cache
的源代码包括此 enable_by_argument
function:
def enable_by_argument(caching)
FileUtils.mkdir_p("tmp")
if caching
create_cache_file
elsif caching == false && File.exist?(FILE)
delete_cache_file
end
end
我如何 运行 rails dev:cache
命令以便它使用此参数? 我尝试了几种变体,包括 rails dev:cache[true]
, rails dev:cache\[true\]
和 rails dev:cache true
, 但它们都使用了切换行为而不是参数控制行为。
这不是 How to pass command line arguments to a rake task 的重复问题,因为该问题是关于将参数传递给 Rake 任务的。但这是内置于 Rails 中的命令。
默认情况下不可能这样做,因为the original task根本不接受参数。
但是,如果我们稍微改进任务代码,我们可以让它执行您想要的操作。
将其放在 Rakefile
:
# Remove original task
Rake::Task["dev:cache"].clear
# Reimplement task with new and improved behavior
namespace :dev do
desc "Toggle development mode caching on/off"
task :cache, [:enable] do |task, args|
enable = ActiveModel::Type::Boolean.new.cast(args[:enable])
if enable.nil?
# Old behavior: toggle
Rails::DevCaching.enable_by_file
else
# New behavior: by argument
Rails::DevCaching.enable_by_argument(enable)
puts "Development mode is #{enable ? 'now' : 'no longer'} being cached."
end
end
end
现在您可以使用其中任何一个:
rails dev:cache
rails dev:cache[true]
rails dev:cache[false]