是否有一种防弹方法来检测Ruby或Ruby on Rails中上传文件的MIME类型?我使用的SWFUpload上传的JPEG和PNG图像,并content_type始终"application/octet-stream"
我正在从远程站点提取文本并尝试将其加载到默认使用utf-8的Ruby 1.9/Rails 3应用程序中.
以下是一些违规文字的示例:
Cancer Res; 71(3); 1-11. ©2011 AACR.\n
Run Code Online (Sandbox Code Playgroud)
扩展的版权代码如下所示:
Cancer Res; 71(3); 1-11. \xC2\xA92011 AACR.\n
Run Code Online (Sandbox Code Playgroud)
Ruby告诉我字符串被编码为ASCII-8BIT并且输入我的Rails应用程序让我这样:
incompatible character encodings: ASCII-8BIT and UTF-8
Run Code Online (Sandbox Code Playgroud)
我可以使用此正则表达式删除版权代码
str.gsub(/[\x00-\x7F]/n,'?')
Run Code Online (Sandbox Code Playgroud)
产生这个
Cancer Res; 71(3); 1-11. ??2011 AACR.\n
Run Code Online (Sandbox Code Playgroud)
但是如何在UTF-8中将版权符号(以及其他各种符号,如希腊字母)转换为相同的符号?当然有可能......
我看到使用force_encoding的引用,但这不起作用:
str.force_encoding('utf-8').encode
Run Code Online (Sandbox Code Playgroud)
我意识到还有很多其他人有类似的问题,但我还没有看到一个有效的解决方案.
我在Google上搜索过,我刚刚发现了gem 的用途.如,宝石安装等
是.rb脚本的宝石集合吗?
如果我构建了一系列脚本,例如包含Google翻译功能的脚本,那么分发使用gem的首选方法是什么?
如果没有,我将如何分发此代码?
如果我在一个URL如
http://domain.com/mysite/bla
Run Code Online (Sandbox Code Playgroud)
如何只请求没有路径的URL?如
http://domain.com
Run Code Online (Sandbox Code Playgroud) 我想从位置N到字符串末尾的字符串中获取子字符串.
在Ruby中用它做什么的方法是什么?
Sinatra是多线程的吗?我在其他地方读到"sinatra默认是多线程的",这意味着什么?
考虑这个例子
get "/multithread" do
t1 = Thread.new{
puts "sleeping for 10 sec"
sleep 10
# Actually make a call to Third party API using HTTP NET or whatever.
}
t1.join
"multi thread"
end
get "/dummy" do
"dummy"
end
Run Code Online (Sandbox Code Playgroud)
如果我随后在另一个选项卡或浏览器中访问"/ multithread"和"/ dummy",则无法提供任何内容(在这种情况下为10秒),直到"/ multithread"请求完成.如果活动冻结应用程序变得没有响应.
我们如何在不产生应用程序的另一个实例的情况下解决这个问题?
我正在尝试计算字符串出现在另一个字符串中的次数.
我知道你可以计算字母出现在字符串中的次数:
string = "aabbccddbb"
string.count('a')
=> 2
Run Code Online (Sandbox Code Playgroud)
但是如果我搜索"aa"出现在这个字符串中的次数,我也会得到两次.
string.count('aa')
=> 2
Run Code Online (Sandbox Code Playgroud)
我不明白这一点.我把值放在引号中,所以我在搜索确切字符串出现的次数,而不仅仅是字母.
我想从命令行调用Ruby脚本,并传入键/值对的参数.
命令行调用:
$ ruby my_script.rb --first_name=donald --last_name=knuth
Run Code Online (Sandbox Code Playgroud)
my_script.rb:
puts args.first_name + args.last_name
Run Code Online (Sandbox Code Playgroud)
什么是标准的Ruby方法呢?在其他语言中,我通常必须使用选项解析器.在Ruby中我看到了ARGF.read,但是这似乎不像这个例子那样工作键/值对.
OptionParser看起来很有希望,但我不知道它是否真的支持这种情况.
我正在阅读Rails教程,由于json gem的问题,我无法完成'bundle install'.当我尝试直接安装它时:
me@tru2:~/rails/hello_app$ gem install json -v '1.8.3'
Building native extensions. This could take a while...
ERROR: Error installing json:
ERROR: Failed to build gem native extension.
/home/me/.rvm/rubies/ruby-2.2.3-dev/bin/ruby -r ./siteconf20150820-12793-qdkev7.rb extconf.rb
creating Makefile
make "DESTDIR=" clean
make "DESTDIR="
compiling generator.c
linking shared-object json/ext/generator.so
/usr/bin/ld: cannot find -lgmp
collect2: error: ld returned 1 exit status
make: *** [generator.so] Error 1
make failed, exit code 2
Gem files will remain installed in /home/me/.rvm/gems/ruby-2.2.3-dev/gems/json-1.8.3 for inspection.
Results logged to /home/me/.rvm/gems/ruby-2.2.3-dev/extensions/x86_64-linux/2.2.0/json-1.8.3/gem_make.out
Run Code Online (Sandbox Code Playgroud)
如上所述,ruby版本是2.2.3.
me@tru2:~/rails/hello_app$ …Run Code Online (Sandbox Code Playgroud)