【问题标题】:I want to write a python code in Ruby script, how can that be done?我想用 Ruby 脚本编写一个 python 代码,怎么做?
【发布时间】:2020-12-22 11:50:57
【问题描述】:

我在 Python 脚本 1.py 中有以下代码,它在运行时执行 read_config.rb ruby​​ 脚本。

from Naked.toolshed.shell import execute_rb, muterun_rb
success = execute_rb('read_config.rb')

现在这里是一个 read_config.rb Ruby 文件

from my-vpc-netapp-only import Variables      # Python line of code to be executed 
require 'erb'
require 'yaml'

region= 'ap-south-1'
k8sver='1.18'
vpccidr= '192.168.0.0/16'
vpcid = Variables.VPC_ID
pubsubnet1a = Variables.PUBSUBNET1A
pubsubnet1b = Variables.PUBSUBNET1B
prisubnet1a = Variables.PRISUBNET1A
prisubnet1b = Variables.PRISUBNET1B

template = ERB.new File.read 'managedcluster.yaml.erb'

File.open('managedcluster.yaml', 'w') do |f|
  f.write template.result(binding)
end

在这个 Ruby 文件中,我从另一个 python 脚本中导入类变量。 可以进行哪些更改以使脚本执行时不会出现任何错误?

【问题讨论】:

  • 请参阅decalage.info/python/ruby_bridge 以了解您的选项概述,我个人会在 Ruby 本身中从您的 netapp 读取变量,不需要 Python
  • 为什么不直接将变量传递给 ruby​​ 脚本呢? from Naked.toolshed.shell import execute_rb, muterun_rb; from my-vpc-netapp-only import Variables; success = execute_rb('read_config.rb', [YOUR VARIABLES HERE]) 然后在 ruby​​ 脚本中,您可以从 ARGV 读取它们。 Basic article on ARGV

标签: python ruby-on-rails ruby python-3.8


【解决方案1】:

据我了解,my-vpc-netapp-only 是一个正在运行的应用程序,这就是您需要使用导入等效项自动获取变量值的原因。否则你可以从my-vpc-netapp-only.py 中挑选一些变量。在这种假设下,这是一个写作问题

PUBSUBNET1A
PUBSUBNET1B
PRISUBNET1A
PRISUBNET1B

在运行my-vpc-netapp-only.py 时文件发生更改,并且您在 ruby​​ 脚本中读取它以生成 yaml 文件。

【讨论】:

    【解决方案2】:

    在这个 ruby​​ 文件中,我从另一个 python 脚本导入类变量。可以进行哪些更改以使脚本在没有任何错误的情况下执行?

    该行在语法上不是有效的 Ruby,因此您需要做的第一件事是修改它,使其成为有效的 Ruby。也许是这样的:

    import(:Variables, from: :'my-vpc-netapp-only')
    

    第 2 步是用 Ruby 编写一个 Python 解释器,它提供了一个 import 方法,可以将 Python 模块作为 Ruby 对象导入。

    【讨论】:

      猜你喜欢
      • 2020-04-21
      • 1970-01-01
      • 2020-05-24
      • 2023-03-14
      • 2018-11-24
      • 1970-01-01
      • 2015-05-08
      • 2022-11-26
      • 1970-01-01
      相关资源
      最近更新 更多