标签: ruby

69
推荐指数
10
解决办法
7万
查看次数

如何重命名gemset?

是否有RVM命令可以简单地重命名gemset?我在RVM网站上找不到它.

ruby rvm

69
推荐指数
2
解决办法
9742
查看次数

在Ruby中有没有办法重载初始化构造函数?

在Java中,您可以重载构造函数:

public Person(String name) {
  this.name = name;
}
public Person(String firstName, String lastName) {
   this(firstName + " " + lastName);
}
Run Code Online (Sandbox Code Playgroud)

Ruby中有没有办法实现同样的结果:两个构造函数采用不同的参数?

ruby

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

不兼容的字符编码:ASCII-8BIT和UTF-8

我使用Ruby 1.9.2和Rails 3.0.5

我有以下错误:

不兼容的字符编码:ASCII-8BIT和UTF-8

它与我认为的数据库无关.

错误是在视图中惹恼这一行(只是一个div haml调用):

#content
Run Code Online (Sandbox Code Playgroud)

全栈:

    ActionView::Template::Error (incompatible character encodings: ASCII-8BIT and UTF-8):
        21:                     -flash.each do |name, msg|
        22:                         =content_tag :div, msg, :id => "flash_#{name}"
        23:                         %div.clear                      
        24:                     #content                                        
        25:                         = yield
        26:             = render :partial => "layouts/grid_right" if render_grid_right?
        27:             = render :partial => "layouts/footer"
      app/views/layouts/application.html.haml:24:in `_app_views_layouts_application_html_haml___4380000789490545718_2180251300_2717546578298801795'
      actionpack (3.0.5) lib/action_view/template.rb:135:in `block in render'
      activesupport (3.0.5) lib/active_support/notifications.rb:54:in `instrument'
      actionpack (3.0.5) lib/action_view/template.rb:127:in `render'
      actionpack (3.0.5) lib/action_view/render/layouts.rb:80:in `_render_layout'
      actionpack (3.0.5) lib/action_view/render/rendering.rb:62:in `block in _render_template'
      activesupport (3.0.5) lib/active_support/notifications.rb:52:in `block …
Run Code Online (Sandbox Code Playgroud)

ruby haml ruby-on-rails ruby-on-rails-3

69
推荐指数
8
解决办法
11万
查看次数

如何检查是否定义了类?

如何将字符串转换为类名,但仅限于该类已存在?

如果Amber 已经是一个类,我可以通过以下方式从字符串到类:

Object.const_get("Amber")
Run Code Online (Sandbox Code Playgroud)

或(在Rails中)

"Amber".constantize
Run Code Online (Sandbox Code Playgroud)

NameError: uninitialized constant Amber如果Amber还没有上课,那么其中任何一个都会失败.

我的第一个想法是使用该defined?方法,但它不区分已存在的类和不存在的类:

>> defined?("Object".constantize)
=> "method"
>> defined?("AClassNameThatCouldNotPossiblyExist".constantize)
=> "method"
Run Code Online (Sandbox Code Playgroud)

那么在我尝试转换之前,如何测试字符串是否命名一个类?(好吧,begin/ rescueblock如何捕获NameError错误?太丑了?我同意......)

ruby class defined ruby-on-rails-3

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

如何使用nginx proxy_pass保留请求URL

我试图使用Thin app服务器并遇到一个问题.

当nginx 代理使用proxy_pass http://my_app_upstream;应用程序对Thin(或Unicorn)的请求接收由nginx(http://my_app_upstream)发送的修改后的URL .

我想要的是从客户端传递原始URL和原始请求而不进行任何修改,因为应用程序非常依赖它.

nginx的" DOC说:

如果需要以未处理的形式传输URI,则应使用指令proxy_pass而不使用URI部分.

但我不明白如何配置,因为相关的示例实际上使用URI:

location  /some/path/ {
  proxy_pass   http://127.0.0.1;
}
Run Code Online (Sandbox Code Playgroud)

那么请你帮我弄清楚如何保留客户端的原始请求URL

ruby proxy nginx thin unicorn

69
推荐指数
5
解决办法
10万
查看次数

向Time对象添加分钟

所以在红宝石中你可以做Time.now + 10.hours ......

没有相当于秒和分钟?例如,Time.now + 15.mins.

ruby time ruby-on-rails

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

Ruby多字符串替换

str = "Hello? World?"
Run Code Online (Sandbox Code Playgroud)

预期产出是:

"Hello:) World:("
Run Code Online (Sandbox Code Playgroud)

我可以做这个: str.gsub("?", ":)").gsub("?", ":(")

有没有其他方法可以在单个函数调用中执行此操作?就像是:

str.gsub(['s1', 's2'], ['r1', 'r2'])
Run Code Online (Sandbox Code Playgroud)

ruby string gsub

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

Rails:更新模型属性而不调用回调

我有一个具有:credits属性的User模型.我想要一个简单的按钮,通过一个名为"add"的路由将5添加到用户的信用点,这样/ users/3/add会将5添加到用户id = 3的信用点.

def add
    @user = User.find(params[:id])
    @user.credits += 5
    redirect_to root_path
end
Run Code Online (Sandbox Code Playgroud)

这是我的控制器的相关部分.问题是,我不想调用@ user.save,因为我有一个before_save回调,它根据当前的UTC时间重新加密用户的密码.我只想简单地为属性添加5并避免回调,我从未想过这么简单的事情会如此困难.

编辑:

我将回调更改为:before_create,这是我的新控制器代码(相关部分):

  def add
    @user = User.find(params[:id])
    @user.add_credits(5)
    @user.save
    flash[:success] = "Credits added!"
    redirect_to root_path
  end
Run Code Online (Sandbox Code Playgroud)

这是我在模型中的代码:

 def add_credits(num)
    self.credits = num
 end
Run Code Online (Sandbox Code Playgroud)

编辑2:

好吧,这是一个验证问题,使"编辑"中的更改无法正常工作,但我仍然喜欢在没有回调的情况下更新原始问题的答案!

ruby attributes model ruby-on-rails callback

69
推荐指数
4
解决办法
5万
查看次数

如何在Jekyll中链接if语句?

我在Jekyll中使用逻辑运算符但它不起作用.

第一页,第二页和第三页都使用相同的布局(多语言解决方案的一部分,效果很好,但需要使用逻辑循环进行布局控制以保持干燥.)

这是代码:

{% if page.type == "post" %}
{% include post.html %}
{% elseif page.class == "contact" %}
{% include contact.html %}
{% else %}
{{ content }}
{% endif %}
Run Code Online (Sandbox Code Playgroud)

如果我把它分解为一个else和一个if else设置,任何两个树,一切正常.但是一旦我使用第三个条件就会中断.我和Jekyll只限于两个条件?我可以进行重组以使case运算符适用,但我更愿意理解这里的基本问题.谢谢大家.

ruby ruby-on-rails jekyll

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

标签 统计

ruby ×10

ruby-on-rails ×4

ruby-on-rails-3 ×2

attributes ×1

callback ×1

class ×1

curl ×1

defined ×1

gsub ×1

haml ×1

jekyll ×1

model ×1

nginx ×1

proxy ×1

rvm ×1

string ×1

thin ×1

time ×1

unicorn ×1