标签: ruby

检测Ruby中上传文件的MIME类型

是否有一种防弹方法来检测Ruby或Ruby on Rails中上传文件的MIME类型?我使用的SWFUpload上传的JPEG和PNG图像,并content_type始终"application/octet-stream"

ruby file-upload ruby-on-rails swfupload

45
推荐指数
7
解决办法
3万
查看次数

将非ASCII字符从ASCII-8BIT转换为UTF-8

我正在从远程站点提取文本并尝试将其加载到默认使用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)

我意识到还有很多其他人有类似的问题,但我还没有看到一个有效的解决方案.

ruby utf-8 internationalization

45
推荐指数
3
解决办法
6万
查看次数

如何在Ruby中删除满足数组条件的所有元素?

我怎样才能在Ruby中实现它?有没有一行代码技术?假设我想摆脱小于3的整数数组的所有元素.

ruby

45
推荐指数
3
解决办法
3万
查看次数

什么是Ruby宝石?

我在Google上搜索过,我刚刚发现了gem 的用途.如,宝石安装等

是.rb脚本的宝石集合吗?

如果我构建了一系列脚本,例如包含Google翻译功能的脚本,那么分发使用gem的首选方法是什么?

如果没有,我将如何分发此代码?

ruby gem

45
推荐指数
2
解决办法
2万
查看次数

45
推荐指数
2
解决办法
3万
查看次数

如何从位置N获取子串到Ruby 1.8.7中的最后一个字符串?

我想从位置N到字符串末尾的字符串中获取子字符串.

在Ruby中用它做什么的方法是什么?

ruby string substring

45
推荐指数
1
解决办法
3万
查看次数

Sinatra是多线程的吗?

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"请求完成.如果活动冻结应用程序变得没有响应.

我们如何在不产生应用程序的另一个实例的情况下解决这个问题?

ruby sinatra

45
推荐指数
2
解决办法
2万
查看次数

Ruby:如何计算字符串出现在另一个字符串中的次数?

我正在尝试计算字符串出现在另一个字符串中的次数.

我知道你可以计算字母出现在字符串中的次数:

string = "aabbccddbb"
string.count('a')
=> 2
Run Code Online (Sandbox Code Playgroud)

但是如果我搜索"aa"出现在这个字符串中的次数,我也会得到两次.

string.count('aa')
=> 2
Run Code Online (Sandbox Code Playgroud)

我不明白这一点.我把值放在引号中,所以我在搜索确切字符串出现的次数,而不仅仅是字母.

ruby string count

45
推荐指数
2
解决办法
3万
查看次数

在Ruby脚本中解析命令行参数

我想从命令行调用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看起来很有希望,但我不知道它是否真的支持这种情况.

ruby command-line

45
推荐指数
4
解决办法
3万
查看次数

无法在Ubuntu上安装带有ruby 2.2.3的json gem

我正在阅读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)

ruby json ruby-on-rails

45
推荐指数
2
解决办法
1万
查看次数