词汇:for
prep. 为,为了;给;因为;对于;适合于;至于
相关场景
- I'm pulling it out of ENV with my Kamal registry password that I've already set up on my personal bash. And then, the Rails master key that does the decoding of any credentials we've set for Rails, it's just using a cat straight out of config master key.>> Rails 8.0.1 You are in good company
- Docker Hub:
- And there's a default configuration file in config/deploy.yml that we can use, it's prefilled a little bit, it has the service name of the name of reaction, but we need to rename, for example, your user,the name of the image to go to my name of where I store this on Docker Hub. You can see we change that down in the registry as well and the name of the container image.>> Rails 8.0.1 You are in good company
- Kamal:
- All right, that is very neat. Now, let's go to production! Because of course, you're not just here to create a Hello World app that runs on your own machine, you want to get this out into the world! And rails8 and forward ships with Kamal, a simple tool for deploying your web application anywhere.>> Rails 8.0.1 You are in good company
- And if we hop into our comment, we can set up a broadcast_to for that post. The broadcast_to will broadcast all update made to that comment, whether a new comment is updated or an existing comment is changed in some way or even one deleted, and send it back out to a channel on action cable named after the post association that this comment belongs to!>> Rails 8.0.1 You are in good company
- All right, let's save that and hop back into our browser. Oop! I made a mistake here! When we generated the resource,it added a route for the new comments,but that route was not nested by default. We actually need to go into our routes.rb, that resource we added needs to be nested.>> Rails 8.0.1 You are in good company
- Now that we have that up, we can hop in and look it all up into the show action for the posts! That's gonna reference that common slot comments, that includes both the comments and the new form.>> Rails 8.0.1 You are in good company
- And your comment is just be a text area for content. We could have made this a rich text field as well, but let's keep things simple and just keep it in plain text!>> Rails 8.0.1 You are in good company
- 16:03:
- Now, we're also gonna add a number of partials here. This is the templating system, basically, a sub-routine that you can refer to. There's gonna be three of them that includes the entire comment section. We're gonna reference that in our post show in just a second. And within that, we're gonna refer to another partial for an individual comment, and another partial again for the new setup. So, let's paste some of that in here, You can see this for the entire collection, it just has an H2 for the comments, and we render the post comments. This again uses Rails' convention over the configuration approach.>> Rails 8.0.1 You are in good company
- So, let's run the migration for that, that sets up the comments table. You can see here the schema that we've now built up. We've added a number of tables for action text and action storage. And then, we have added a comments table. That's what you can see here. As we had it in the migration where we were just referencing the post as a foreign key, and then we had the content as text.>> Rails 8.0.1 You are in good company
- Alright! Now let's add some comments to our blogging system! And I'm gonna use a different generator here,I'm gonna use a resource generator that is a little lighter than the one we were using for scaffold that doesn't generate a bunch of views, and doesn't generate all sorts of actions in the controller by default, but it does generate the new model that we need the comment model, it generates a migration for that, create comments ,and it generates just some empty placeholders for the comments controller and for the view action.>> Rails 8.0.1 You are in good company
- If you look at something like hey.com, you'll see this technique in use on a major application, and you can view all of the Javascript that we use to build that application, and that's the default for Rails.>> Rails 8.0.1 You are in good company
- inspector:
- But really, what's unique here for Rails is the fact that we're using no build by default! So if I go over here in the inspector and look at the JavaScript files that are included,you can see we have the application js file with a little digest stamp on there. If we change anything that application js file, the digest is going to change, and the browser will redownload just the part!>> Rails 8.0.1 You are in good company
- zoo:
- And we will give it a format for what it should do with UTC timestamp, and turning it into a local time that we can have a look at.So if I reload here, you see it is November 13th, by the time of my recording at 3:28 PM in my local time zone, but actually underneath, the time tag is gonna be in UTC. That means we can cache this, and anyone around the world will still get the time displayed in their local time.>> Rails 8.0.1 You are in good company
- And we're gonna start local time here. And in the local time, we're gonna use it, and we're gonna use it for adding the updated at timestamp here. And as you can see here, we're just adding a time tag that's just a vanilla HTML tag that has a data local time that's what activates that local time JavaScript set up.>> Rails 8.0.1 You are in good company
- And then, there's the stimulus framework for creating that additional functionality that you might need in a really simple way. You can have a look at hotwire.dev to see more about that, but what we're gonna add here is a little piece of JavaScript to just add some additional functionality, pulling something in from pin.>> Rails 8.0.1 You are in good company
- As you can see here, there is now a full WYSIWYG interface for creating the body. It comes with a default set of styles for the toolbar, you can change those, those styles are generated straight into your application, so you can make it look nice for yourself. Let's give some bold and italic text here, you see, that was all that was needed. but I think what's even nicer to look at here is if we do an upload and we add a file, you will see that file gets added with a preview directly to the WYSIWYG editor. And if we save that and we update the post, it is added to the post itself. And that then went through the whole process of doing a direct upload of the file when we dropped it into the editor, that uploads it straight to active storage. And then, we have access to that, and rendering it directly from whatever storage backend active storage is using. In this example , we're just storing on disk, but you could be storing your active storage in S3 or another object storage.>> Rails 8.0.1 You are in good company
- But before we can do that, let's change the text area we had in the form here for our new post to be a rich text area. "form.rich_textarea :body". That's basically all you have to change, and let's save that and hop back into creating a new post.>> Rails 8.0.1 You are in good company
- Active Storage is a way to deal with attachments and other files in your Rails application. When you run it through action_text:install, it'll automatically set up those active storage tables that we need, there is one for blob,and then we have one for text here.We run migrations to set that up again, and now that we've run action_text:install, it also added a couple of gems, so we need to restart our development server. I do that just by exiting out and just running the server again!>> Rails 8.0.1 You are in good company
- This is exceptionally helpful for interacting with your domain model, updating things on the fly, and as you will later, updating things even once you've deployed this to production!>> Rails 8.0.1 You are in good company
- console instance variables:
- Now, let me show you one of the first feature here. If we do raise exception inside the index action, "rails 'some exception' " you will see that Rails provides some really nice interface for dealing with that exception, seeing exactly where it happened. If I'm reloading here, you can see the line, it was raised on the source code that's around it, you can see a full trace. And down here, we even have a console! So, you can interact with the instance variables that have been set for this index actions, here's just at posts that's been made available.>> Rails 8.0.1 You are in good company
- Now , Rails has a bunch of different ways you can do the CSS, there's also a path where you can use Tailwind. Lots of people like that for good reason, and there are a bunch of different options, all the major CSS frameworks are available, but by default, we ship with a no build, as I said, intention and simple CSS just make things look prettier without having to adorn anything with classes, or what have you.>> Rails 8.0.1 You are in good company
- This is the thing you're gonna see, when you start up a new Rails application, it'll tell you which version you're on, both for the ruby version, the Rails version, and the Rack version. That's running on localhost:3000 by default. But if we do slash posts here, you'll see the scaffold interface that we generated. Now, this is the index action, the one we just looked at in the view and from the controller. But if we click the New, you see here we have form for creating the new post with its title and its body. it's quiet basic, to put it mildly right now, but all the actions are mapped out. This scaffold interface is not meant for shipping into production, it is meant to showing you how to build a Rails application with the basics, and then you make it look pretty, you make it look nice.>> Rails 8.0.1 You are in good company
- auxiliary police:
- Now if we hop over and start up our development server, you do that with just bin/dev. If we were running a Rails application that also had auxiliary watcher processes such as one for ES build or for Tailwind, bin/dev would start those as well. But this version of our Rails blog, is just going to be built with all vanilla, no build swt up so we only need to start the Puma, Ruby web server,and we can hop over into the browser and see here.>> Rails 8.0.1 You are in good company
- And Rails uses ERB, which is essentially embedded Ruby. So, you mix HTML with Ruby in line, and you can split out more complicated functions into helper methods. But otherwise, this is the clearest cut setup in Rails, this is the default for integrating HTML and Ruby.>> Rails 8.0.1 You are in good company
- If we jump into the post model, you'll see there's actually nothing here. Everything in the post model is made available through introspection. So, a new post model will look at the schema for that table, and it will know that there is a title and there is a body, and we can access that title and that body directly through this post object.>> Rails 8.0.1 You are in good company