ruby-on-rails - Rails 2 -- 基于服务器操作系统将参数传递给 wicked_pdf

标签 ruby-on-rails ruby plugins pdf-generation

我有一个方法

def welcome(*args)
  #....some code
end

根据情况我有时不得不调用这个方法

welcome(arg1,arg2) {|block| #code}

但有时我想打电话

welcome(arg1) {|block| #code}

两个调用的 block 部分是相同的

请帮我 DRY 这段代码并实现功能

编辑

抱歉没有早点展示

我正在尝试在我的 Rails 应用程序中实现 wicked_pdf 插件。它有以下代码

Open3.popen3(command_for_stdin_stdout,"b") do |stdin, stdout, stderr|
      stdin.write(string)
      stdin.close
      pdf = stdout.read
      raise "PDF could not be generated!\n#{stderr.read}" if pdf.length == 0
      pdf
end

仅当服务器在 Windows 上运行时才需要传递给该方法的第二个参数,即“b”,否则不需要该参数。当我尝试传递空白值时,它不会生成 pdf。我试过这样做

Open3.popen3(command_for_stdin_stdout,(["i386-mingw32","mswin","win32","mingw","bccwin","cygwin"].include?(RUBY_PLATFORM) ? "b" : ""))
.......#rest of the code

谢谢

最佳答案

没问题! block 参数在 Ruby 方法中有自己的槽位,因此同时使用 splatted 参数是绝对安全的。

def welcome(*args)
  puts args.inspect
  yield
  #....some code
end

welcome "asdf", "asdf" do
  puts "uh-oh"
end

welcome "just one" do
  puts "still works?"
end

关于ruby-on-rails - Rails 2 -- 基于服务器操作系统将参数传递给 wicked_pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5900153/

相关文章:

ruby-on-rails - 亚马逊 Ami - 错误 "instaling nokogiri using bundle"

ruby 与 Xcode 5

firebase - 为什么这些 Firestore 规则不适用于 Flutter Firebase 插件?

java - 为什么在Ant插件taskdefs上有变化?

ruby-on-rails - 什么是 "common"在日志中仅显示一次消息的实践/技术?

ruby-on-rails - Rails 3 : belongs_to, has_one 和迁移

css - rails : Is it better to display images with image_tag or css background image?

ruby - 通过启动多个进程而不是使用线程来扩展 ruby​​ 脚本

ruby-on-rails - Rails 3 run_callbacks 方法

c++ - 如何知道 dlopen() 时没有 .so