标签: ruby

为什么在Ruby中将0视为真?

我正在阅读优秀的Ruby on Rails教程并遇到以下代码.

if 0
  true
else
  false
end
Run Code Online (Sandbox Code Playgroud)

上述返回true和示出了如何与许多语言(C是明显的例子),红宝石治疗0true.我并没有将这种行为视为特殊情绪,而是认为这有很大理由偏离惯例.Python中,例如,治疗0False,正如人们所期望的.

简而言之,设计红宝石的理由0true什么?

ruby programming-languages

32
推荐指数
3
解决办法
8167
查看次数

使用simple_form的按钮内的HTML代码

我是rails的新手,刚刚找到了simple_form gem.我用bootstrap suport安装它,但现在我无法让这个代码按照我想要的方式工作

<%= f.button :submit, "<i class='icon-ok icon-white'></i> Save", class: "btn btn-primary" %>
Run Code Online (Sandbox Code Playgroud)

我只想把图标按钮里面,但我这样做的时候,就说明我的文字"<I类="图标确认图标白"> </ I>保存"按钮

我也试过

<%= f.button :submit, class: "btn btn-primary" do %><i class="icon-ok icon-white"></i> Save<% end %>
Run Code Online (Sandbox Code Playgroud)

但没有成功.如何使用simple_form gem在按钮内添加一些HTML?

ruby ruby-on-rails simple-form twitter-bootstrap

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

在控制台外运行Rails命令

使用我的大型应用程序,Rails控制台需要一段时间才能加载.有没有办法更轻松地单个命令?

我也希望能够实现自动化,并且echo "query" | rails console不是一种很好的做事方式.

思考?

编辑:一个长时间运行的进程,我可以在需要时ping查询?

ruby console ruby-on-rails ruby-on-rails-3

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

带标题的Ruby https POST

如何在带有json的Ruby中使用标题创建一个Https帖子?

我试过了:

uri = URI.parse("https://...")
    https = Net::HTTP.new(uri.host,uri.port)
    req = Net::HTTP::Post.new(uri.path)
    req['foo'] = bar
    res = https.request(req)
puts res.body
Run Code Online (Sandbox Code Playgroud)

ruby https post header

32
推荐指数
4
解决办法
6万
查看次数

Rspec:期望vs期望与阻止 - 有什么区别?

刚学习rspec语法,我注意到这段代码有效:

  context "given a bad list of players" do
    let(:bad_players) { {} }

    it "fails to create given a bad player list" do
       expect{ Team.new("Random", bad_players) }.to raise_error
     end 
  end
Run Code Online (Sandbox Code Playgroud)

但是这段代码没有:

  context "given a bad list of players" do
    let(:bad_players) { {} }

    it "fails to create given a bad player list" do
       expect( Team.new("Random", bad_players) ).to raise_error
     end 
  end
Run Code Online (Sandbox Code Playgroud)

它给了我这个错误:

Team given a bad list of players fails to create given a bad player list
     Failure/Error: expect( Team.new("Random", bad_players) …
Run Code Online (Sandbox Code Playgroud)

ruby tdd rspec2

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

rspec共享示例与共享上下文

shared_examples和之间的真正区别是shared_context什么?

我的观察:

  1. 我可以使用两者测试相同的东西(即带shared_examplesshared_context)

  2. 但是如果我以后使用其他测试,我的其他一些测试会失败.

观察#1:

我在https://www.relishapp.com/上比较了每个文档的shared_examplesshared_context

语法上的差异是:

  • shared_context用于定义将通过隐式匹配元数据在示例组的上下文中计算的块

示例:

shared_context "shared stuff", :a => :b do
  ...
end
Run Code Online (Sandbox Code Playgroud)
  • 从测试文件中包含或调用它们的方式

shared_examples

include_examples "name"      # include the examples in the current context
it_behaves_like "name"       # include the examples in a nested context
it_should_behave_like "name" # include the examples in a nested context
Run Code Online (Sandbox Code Playgroud)

shared_context

include_context "shared stuff"
Run Code Online (Sandbox Code Playgroud)

观察#2

我有一个测试用例

shared_context 'limit_articles' do |factory_name|
  before do
    @account = create(:account)
  end

  it 'should …
Run Code Online (Sandbox Code Playgroud)

ruby rspec ruby-on-rails

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

从rails模型中访问转换文件(i18n)

我的模型中包含的内容是:

def body_color_enum
  [
    ['Aqua', '#009c9c'],
    ['Grey', '#6d6e71'],
    ['Yellow', '#ffe600'],
    ['White', 'white']
  ]
end
Run Code Online (Sandbox Code Playgroud)

我希望这些值来自翻译文件'en.yml'

en:
  group:
    hero:
      hex1: '#6d6e71'
      name1: 'Dark grey'
      hex2: '#ccc'
      name2: 'Light grey'
      hex3: '#0099ce'
      name3: 'Blue'
      hex4: '#ffffff'
      name4: 'White'
Run Code Online (Sandbox Code Playgroud)

我试过这个:

def body_color_enum
  [
    [t('group.hero.name1'), '#009c9c'],
    ['Grey', '#6d6e71'],
    ['Yellow', '#ffe600'],
    ['White', 'white']
  ]
end
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

undefined method `t' for #<Group:0x007fabad847ac8>
Run Code Online (Sandbox Code Playgroud)

所以我问的是如何从模型中访问我的本地文件,以便我可以在body_color_enum方法中设置我的值.

ruby translation localization ruby-on-rails rails-i18n

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

如何与Rails 4同时处理请求?

我试图服务于多个请求,同时在轨道4,这是我能够用做得很轻松config.threadsafe!,并Puma在Rails 3中.

说我有这个控制器

class ConcurrentController < ApplicationController
  def index
    sleep 10000
  end

  def show
  end
end
Run Code Online (Sandbox Code Playgroud)

我以前能够开始使用puma puma -t 2:16 -p 3000(最少2个线程)然后点击index然后show仍然可以show正确渲染.

在Rails 4中,如果我尝试做同样的事情,Puma现在会锁定index请求并且show永远不会被渲染.当我点击Ctrl-C服务器时,Puma给了我这个错误:

Rack app error: #<ThreadError: Attempt to unlock a mutex which is locked by another thread>
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么来获得并发使用Rails 4?config.threadsafe!应该是不需要的(即使我尝试也没有区别)

ruby concurrency ruby-on-rails puma

32
推荐指数
2
解决办法
9324
查看次数

ruby`coding':"\ xC3"从ASCII-8BIT到UTF-8(Encoding :: UndefinedConversionError)

tvdb中的汉尼拔剧集中有奇怪的人物.

例如:

Œuf
Run Code Online (Sandbox Code Playgroud)

所以红宝石吐出来:

./manifesto.rb:19:in `encode': "\xC3" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)
    from ./manifesto.rb:19:in `to_json'
    from ./manifesto.rb:19:in `<main>'
Run Code Online (Sandbox Code Playgroud)

第19行是:

puts @tree.to_json
Run Code Online (Sandbox Code Playgroud)

有没有办法处理这些非utf字符?我宁愿不更换它们,而是转换它们?还是忽略它们?我不知道,任何帮助表示赞赏.

奇怪的是,脚本通过cron正常工作.手动运行它会产生错误.

ruby encoding utf-8

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

在新的 Apple Silicon 架构上运行 Ruby、Node、Python 和 Docker?

您如何获得在 Apple Silicon 架构上运行的 Ruby、Python 和 Node.js 开发环境。Docker 等虚拟化软件呢?

ruby python node.js docker apple-silicon

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