0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Workato:2025年3月のConnector SDKのアップデート(Rubyのメソッド制限撤廃、ほか)

Last updated at Posted at 2025-04-07

はじめに

Workatoでは、2025年3月にConnector SDK(カスタムコネクタ)上でのRubyメソッド制限が撤廃されました。また、これにあわせて利用可能なライブラリの追加も行われました。

なお、Workatoのドキュメント上ではConnector SDKを対象とし、Rubyコネクタを対象としない旨の記載はありますが、Rubyコネクタもホワイトリストは撤廃されているようで、確認したところホワイトリスト外のメソッドを呼び出して利用することもできましたので、(今後変更される可能性は無いとは言い切れませんが)、Rubyコネクタを活用している場合においても有用なアップデートになるものと思います。 

Rubyメソッド制限の撤廃

Connector SDKで利用可能なRubyメソッドは、これまでホワイトリストで示された範囲に制限されていましたが、これが撤廃され、Ruby 2.7が提供する全てのメソッドを利用することができるようになりました。

WHITELIST REMOVAL

Workato has removed whitelisting for its SDK framework, starting March 2025. This means that developers can now access the full functionality of Ruby 2.7, including built-in libraries, and any available Ruby gems in the SDK container. This change significantly expands the range of capabilities SDK developers can leverage within the platform.

Learn more(opens new window) about the capabilities available with the removal of ruby whitelisting.

This enhancement doesn't apply to the Ruby code connector

プリインストールされたRuby Gem(ライブラリ)

以下に示すRuby gem(ライブラリ)もプリインストールされており、これらを活用したカスタムコネクタの開発も行えるようになりました。

  • activesupport
  • aws-sigv4
  • charlock_holmes
  • concurrent-ruby
  • gyoku
  • i18n
  • jwt
  • loofah
  • mime-types
  • nokogiri
  • rails-html-sanitizer
  • rest-client
  • ruby_rncryptor

なお、上記を含めて利用可能なライブラリは、以下のようなコードをConnector SDK上に作成し、アクションをテスト実行することで確認することが出来ます。

{
  title: "Application name",

  connection: {
  },
  
  test: lambda do |_connection|
  end,

  actions: {
    testdrive: {
      title: 'debug',
      input_fields: lambda do |object_definitions|
      end,
      execute: lambda do |connect, input|
        cmd = 'gem list'
        {
          libs_path: $:,
          gems: `#{cmd}`
        }
      end,
      output_fields: lambda do |object_definitions|
        [
          {title: 'libs_path'},
          {title: 'gems'},
        ]
      end
    }
  },
}

アクションをテスト実行すると、次のような結果が出力されます。

{
	"libs_path": [
		"/main/bundle/bundler/../ruby/2.7.0/gems/workato-connector-sdk-1.3.11/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/webrick-1.8.1/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/tzinfo-data-1.2024.1/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/thor-1.3.0/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/sorbet-runtime-0.5.11336/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/rubyzip-2.3.2/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/ruby_rncryptor-3.0.2/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/ruby-progressbar-1.13.0/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/rest-client-2.1.0/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/rails-html-sanitizer-1.4.4/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/rack-2.2.8/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/netrc-0.11.0/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/net-http-digest_auth-1.4/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/msgpack-1.7.2/lib",
		"/main/bundle/bundler/../ruby/2.7.0/extensions/x86_64-linux/2.7.0/msgpack-1.7.2",
		"/main/bundle/bundler/../ruby/2.7.0/gems/mime-types-3.5.2/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/mime-types-data-3.2024.0206/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/loofah-2.21.3/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/nokogiri-1.15.6-x86_64-linux/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/racc-1.7.3/lib",
		"/main/bundle/bundler/../ruby/2.7.0/extensions/x86_64-linux/2.7.0/racc-1.7.3",
		"/main/bundle/bundler/../ruby/2.7.0/gems/mini_portile2-2.8.5/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/launchy-2.5.2/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/jwt-2.1.0/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/http-cookie-1.0.5/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/http-accept-1.7.0/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/gyoku-1.3.1/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/em-http-request-1.1.7/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/http_parser.rb-0.8.0/lib",
		"/main/bundle/bundler/../ruby/2.7.0/extensions/x86_64-linux/2.7.0/http_parser.rb-0.8.0",
		"/main/bundle/bundler/../ruby/2.7.0/gems/em-socksify-0.3.2/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/eventmachine-1.2.7/lib",
		"/main/bundle/bundler/../ruby/2.7.0/extensions/x86_64-linux/2.7.0/eventmachine-1.2.7",
		"/main/bundle/bundler/../ruby/2.7.0/gems/domain_name-0.6.20240107/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/crass-1.0.6/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/cookiejar-0.3.4/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/charlock_holmes-0.7.7/lib",
		"/main/bundle/bundler/../ruby/2.7.0/extensions/x86_64-linux/2.7.0/charlock_holmes-0.7.7",
		"/main/bundle/bundler/",
		"/main/bundle/bundler/../ruby/2.7.0/gems/builder-3.2.4/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/aws-sigv4-1.2.4/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/aws-eventstream-1.3.0/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/addressable-2.8.6/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/public_suffix-5.0.4/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/activesupport-5.2.8.1/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/tzinfo-1.2.11/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/thread_safe-0.3.6/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/minitest-5.22.2/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/i18n-0.9.5/lib",
		"/main/bundle/bundler/../ruby/2.7.0/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby",
		"/usr/local/lib/ruby/site_ruby/2.7.0",
		"/usr/local/lib/ruby/site_ruby/2.7.0/x86_64-linux",
		"/usr/local/lib/ruby/site_ruby",
		"/usr/local/lib/ruby/vendor_ruby/2.7.0",
		"/usr/local/lib/ruby/vendor_ruby/2.7.0/x86_64-linux",
		"/usr/local/lib/ruby/vendor_ruby",
		"/usr/local/lib/ruby/2.7.0",
		"/usr/local/lib/ruby/2.7.0/x86_64-linux"
	],
	"gems": "
benchmark (default: 0.1.0)
bigdecimal (default: 2.0.0)
bundler (default: 2.1.4)
cgi (default: 0.1.0.2)
csv (default: 3.1.2)
date (default: 3.0.3)
dbm (default: 1.1.0)
delegate (default: 0.1.0)
did_you_mean (default: 1.4.0)
etc (default: 1.1.0)
fcntl (default: 1.0.0)
fiddle (default: 1.0.0)
fileutils (default: 1.4.1)
forwardable (default: 1.3.1)
gdbm (default: 2.1.0)
getoptlong (default: 0.1.0)
io-console (default: 0.5.6)
ipaddr (default: 1.2.2)
irb (default: 1.2.6)
json (default: 2.3.0)
logger (default: 1.4.2)
matrix (default: 0.2.0)
minitest (5.13.0)
mutex_m (default: 0.1.0)
net-pop (default: 0.1.0)
net-smtp (default: 0.1.0)
net-telnet (0.2.0)
observer (default: 0.1.0)
open3 (default: 0.1.0)
openssl (default: 2.1.4)
ostruct (default: 0.2.0)
power_assert (1.1.7)
prime (default: 0.1.1)
pstore (default: 0.1.0)
psych (default: 3.1.0)
racc (default: 1.4.16)
rake (13.0.1)
rdoc (default: 6.2.1.1)
readline (default: 0.0.2)
readline-ext (default: 0.1.0)
reline (default: 0.1.5)
rexml (default: 3.2.3.1)
rss (default: 0.2.8)
sdbm (default: 1.0.0)
singleton (default: 0.1.0)
stringio (default: 0.1.0)
strscan (default: 1.0.3)
test-unit (3.3.4)
timeout (default: 0.1.0)
tracer (default: 0.1.0)
uri (default: 0.10.0.2)
webrick (default: 1.6.1)
xmlrpc (0.3.0)
yaml (default: 0.1.0)
zlib (default: 1.1.0)
"
}

ユースケース

以下のページにも例示されていますが、一例として、次のようなユースケースへの適用が可能です。

  • Webスクレイピングによるデータ収集
  • XMLおよびHTMLのデータ解析
  • 並列処理によるパフォーマンス向上
  • JWS認証
  • Amazon S3との連携
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?