将 CRON 设置为用户时出现编码问题?
Encoding issue when setting up CRON as user?
我已经将 CRON 设置为 运行 当直接从终端 运行 时工作正常的代码,但当通过 CRON 运行 时会引发错误。
我已经通过
附加了 cron
env EDITOR=nano crontab -e
到运行一个Ruby代码就像来自标准终端用户一样。
该代码需要 ruby(包括 'watir' 和 'csv' 宝石)和 chromedriver.
58 10 * * * PATH=$PATH:/usr/local/bin; /Users/sybren/chromedriver; Ruby 'ruby/mycode.rb'
PATH 用于将(环境)设置更改为我的本地用户设置。
'/Users/sybren/chromedriver' 用于将 chromedriver 作为环境变量加载。最后它 运行 是我的 ruby 代码 ('Ruby 'ruby/mycode.rb'')
它引发了以下错误:
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/csv.rb:1987:in `=~': invalid byte sequence in US-ASCII (ArgumentError)
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/csv.rb:1987:in `init_separators'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/csv.rb:1509:in `initialize'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/csv.rb:1261:in `new'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/csv.rb:1261:in `open'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/csv.rb:1119:in `foreach'
我的 ruby 代码中没有“~”。同样,当来自终端的 运行 时,代码 运行 没问题。这里出了什么问题?我相信它在打开新的 csv 并遍历它时会出错。
在您打开 and/or 的代码中,读取文件内容,set the encoding 明确表示:
CSV.open(filename, encoding: Encoding::UTF-8.name) ...
我已经将 CRON 设置为 运行 当直接从终端 运行 时工作正常的代码,但当通过 CRON 运行 时会引发错误。
我已经通过
附加了 cronenv EDITOR=nano crontab -e
到运行一个Ruby代码就像来自标准终端用户一样。 该代码需要 ruby(包括 'watir' 和 'csv' 宝石)和 chromedriver.
58 10 * * * PATH=$PATH:/usr/local/bin; /Users/sybren/chromedriver; Ruby 'ruby/mycode.rb'
PATH 用于将(环境)设置更改为我的本地用户设置。 '/Users/sybren/chromedriver' 用于将 chromedriver 作为环境变量加载。最后它 运行 是我的 ruby 代码 ('Ruby 'ruby/mycode.rb'')
它引发了以下错误:
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/csv.rb:1987:in `=~': invalid byte sequence in US-ASCII (ArgumentError)
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/csv.rb:1987:in `init_separators'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/csv.rb:1509:in `initialize'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/csv.rb:1261:in `new'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/csv.rb:1261:in `open'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/csv.rb:1119:in `foreach'
我的 ruby 代码中没有“~”。同样,当来自终端的 运行 时,代码 运行 没问题。这里出了什么问题?我相信它在打开新的 csv 并遍历它时会出错。
在您打开 and/or 的代码中,读取文件内容,set the encoding 明确表示:
CSV.open(filename, encoding: Encoding::UTF-8.name) ...