顶级命名空间

在命名空间下定义

模块: Mongoid, Rails

实例方法摘要折叠

实例方法详细信息

# check_if_transactions_might_be_available! (客户端) ⇒对象

如果客户端连接到的集群在任何情况下都不支持事务,则此方法会引发错误。 目前,这是独立运行拓扑结构的情况。

请注意,如果此方法未引发,则不能保证事务可用于集群。

参数:

  • 客户端 ( Mongo::Client )

    客户端连接到要测试的集群。

引发:



16
17
18
19
20
# File 'lib/mongoid/railties/console_sandbox.rb', line 16

def check_if_transactions_might_be_available!(客户端)
  if 客户端.集群.单身?
    提高 Mongoid::Errors::TransactionsNotSupported
  end
end

#standard_dependencies对象

rubocop:todo all



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'gemfiles/standard.rb', 第2行

def standard_dependencies
  gem ' rake '

  GROUP :development do
    gem ' fields ', '>= 0.9.35'

    平台 :mri do
      # VSCode 调试器。
      if !ENV[' CI '] && !ENV[' Docker '] && RUBY_VERSION < ' 3.0 '
        gem 'debase'
        gem 'ruby-debug-ide'
      end
    end

    # Evergreen 配置生成
    gem ' erubi '
    gem ' tilt '
    gem ' solargraph ', 平台: :mri
  end

  GROUP :development, :test do
    gem ' rspec ', ' ~> 3.12 '
    gem 'rubocop', ' ~> 1.45.1 '
    gem ' rubocop-performance ', ' ~> 1.16.0 '
    gem 'rubocop-rake', ' ~> 0.6.0 '
    gem ' rubocop-rspec ', ' ~> 2.18.1 '

    平台 :mri do
      gem 'byebug'
    end

    平台 :jRuby do
      gem ' ruby-debug '
    end
  end

  GROUP :test do
    gem 'timecop'
    gem ' rspec-retry '
    gem ' benchmark-ips '
    gem ' fuubar '
    gem ' rfc '
    gem ' childprocess '

    平台 :mri do
      gem ' timeout-interrupt '
    end
  end

  if ENV['FLE'] == ' helper '
    gem ' libmongocrypt-helper ', ' ~> 1.14.0 '
  end
end

#start_sandboxObject

准备控制台沙盒模式。 当用户使用 '–sandbox' 标志启动 Rails 控制台时,应调用此方法。



36
37
38
39
40
41
# File 'lib/mongoid/railties/console_sandbox.rb', line 36

def start_sandbox
  Mongoid.persistence_context.客户端.点击 do |客户端|
    check_if_transactions_might_be_available!(客户端)
    start_sandbox_transaction(客户端)
  end
end

# start_sandbox_transaction (客户端) ⇒对象

启动一个ACID 事务,该事务应包括沙盒控制台会话中的所有操作。 此ACID 事务不应提交。 当用户结束控制台会话时,客户端将断开连接,ACID 事务将因此自动中止。

参数:

  • 客户端 ( Mongo::Client )

    客户端启动ACID 事务。



28
29
30
31
32
# File 'lib/mongoid/railties/console_sandbox.rb', line 28

def start_sandbox_transaction(客户端)
  会话 = 客户端.start_session
  ::Mongoid::线程化.set_session(会话, 客户端: 客户端)
  会话.start_transaction
end