我的场景:我的AMI带有一个deploy/文件夹,该文件夹包含用于在本地主机上部署生产应用程序的capistrano文件
我打算使用Autoscaling组中的用户数据脚本,以在每次组扩展并生成新计算机时部署服务器的最新版本。
该脚本必须以用户ubuntu身份运行
这是我的用户数据
cd /home/ubuntu/
aws s3 cp s3://mybucket-config/production/rails/startup_script.sh ./startup_script.sh --region my-region
chmod +x ./startup_script.sh
chown ubuntu:ubuntu ./startup_script.sh
su - ubuntu -c "./startup_script.sh"
Run Code Online (Sandbox Code Playgroud)
该启动脚本包含
cd /home/ubuntu/deploy/
git pull
git checkout production
cap aws_localhost_production deploy
Run Code Online (Sandbox Code Playgroud)
在期间cap deploy,我遇到了奇怪的错误消息,但在Google上找不到很多关于此内容的参考
NoMethodError:nil:NilClass的未定义方法“ winsize”
这是完整的堆栈
The deploy has failed with an error: undefined method `winsize' for nil:NilClass
/home/ubuntu/.rvm/gems/ruby-2.3.0/gems/airbrussh-1.0.1/lib/airbrussh/console.rb:61:in `console_width': undefined method `winsize' for nil:NilClass (NoMethodError)
from /home/ubuntu/.rvm/gems/ruby-2.3.0/gems/airbrussh-1.0.1/lib/airbrussh/console.rb:26:in `print_line'
from /home/ubuntu/.rvm/gems/ruby-2.3.0/gems/airbrussh-1.0.1/lib/airbrussh/capistrano/tasks.rb:77:in `each_line'
from /home/ubuntu/.rvm/gems/ruby-2.3.0/gems/airbrussh-1.0.1/lib/airbrussh/capistrano/tasks.rb:77:in `error_line'
from /home/ubuntu/.rvm/gems/ruby-2.3.0/gems/airbrussh-1.0.1/lib/airbrussh/capistrano/tasks.rb:42:in `deploy_failed'
from /home/ubuntu/.rvm/gems/ruby-2.3.0/gems/airbrussh-1.0.1/lib/airbrussh/capistrano.rb:15:in `block (2 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Ruby API 更新 Google Sheet(这只是 SheetsV4 API 的包装器)
我遇到以下错误
Google::Apis::ClientError: badRequest: Range ('MySheet'!AA1) 超出网格限制。最大行数:1000,最大列数:26
我在 google 论坛上找到了这个问题的参考资料,但是除了使用不同的方法写入电子表格之外,似乎没有解决该问题的方法。
问题是,我需要复制现有的电子表格模板,并在各种工作表中输入我的原始数据。到目前为止,我一直在使用此代码(serviceRuby SheetsV4 API 的客户端在哪里)
def write_table(values, sheet: 'Sheet1', column: 1, row: 1, range: nil, value_input_option: 'RAW')
google_range = begin
if range
"#{sheet}!#{range}"
elsif column && row
"#{sheet}!#{integer_to_A1_notation(column)}#{row}"
end
end
value_range_object = ::Google::Apis::SheetsV4::ValueRange.new(
range: google_range, values: values
)
service.update_spreadsheet_value(spreadsheet_id,
google_range,
value_range_object,
value_input_option: value_input_option
)
end
Run Code Online (Sandbox Code Playgroud)
到目前为止,它运行得很好,但是在向我的提取物中添加了更多数据之后,我浏览了第 26 列(AA向前的列),现在出现错误。
是否有一些选项可以传递给update_spreadsheet_value我们可以提高这个限制?
否则,使用 append 写入电子表格的另一种方法是什么?
编辑 - 对我的场景的清晰描述 …
在我的 kubernetes 集群上,与我的内存请求相比,我的 Pod 占用了 15% (~4GB) 的额外 GB 内存。我怀疑这是我的一些节点最近崩溃的原因。如何轻松找到配置错误的 Pod 并添加缺少的限制(即查找没有内存请求的 Pod,或者其内存限制与请求相比过高?
这是一个想法:我有一个 2D 数组,其中包含带有换行符的非转义字符串,\n有时甚至是用作 CSV 分隔符的字符,例如;.
我需要能够轻松地将此类数据从远程 Ruby 控制台的输出复制并粘贴到本地 Excel 文件或在线 Google 电子表格中。
它曾经工作正常,直到我遇到带有换行符和分号的数据,使用:
class Array
def puts_csv
map { |row| row.join(';') }.each(&method(:puts))
end
end
[["A1", "B1"], ["A2", "B2"], ["A3", "B3"]].puts_csv
# =>
A1;B1;
A2;B2;
A3;B3;
Run Code Online (Sandbox Code Playgroud)
这会在控制台上输出一个列表,我可以很容易地将其复制/粘贴到我的电子表格应用程序中并选择;作为输入分隔符。
但现在我必须处理包含应该转义的字符的字符串输入,如逗号、分号或换行符。这完全破坏了我对数据的复制/粘贴。
样本数据:
array2D = [
["name", "school", "comment"],
["Jean François", "ENS", "Lorem ipsum dolor sit amet; consectetur,\nadipiscing elit, sed do eiusmod tempor"
]
Run Code Online (Sandbox Code Playgroud)
我当前的方法给出了三行,因为它使用分号分隔符换行:
name;school;comment
Jean François;ENS;Lorem ipsum dolor sit amet;consectetur,
adipiscing elit, sed do eiusmod tempor
Run Code Online (Sandbox Code Playgroud)
目标可能类似于以下内容: …
关于在Ruby中使用Guard子句,我有点缓和了.
Rubocop建议的风格是使用"do if condition_fails"
我经常希望使用guard子句生成有用的错误消息,如果我想继续使用上述样式,则会导致长行,并且"if"通常会被推离屏幕(我不喜欢换行).
问题是,作为开发人员,我并不关心错误消息,而是关注代码条件本身(有时比错误消息更明确).
保护条款的示例,它隐藏了开发人员的可见性
def crtical_function(params)
fail Exception.new("Useful message for the user, but not often useful message for the dev, and as you can see this line is veeeeeeerrrrrry long and just annoying because the dev is rather looking for the condition itself which is often more einteresting than an error message") if not_enough_params
end
Run Code Online (Sandbox Code Playgroud)
如果没有Guard子句样式,您就可以立即理解
def crtical_function(params)
if not_enough_params
fail Exception.new("Useful message for the user, but not often useful message for the dev, and as you …Run Code Online (Sandbox Code Playgroud)